Bob Smith
Bob Smith

Reputation: 11

Matlab, figures and for loops

I am trying to plot the following simple function; $y=A.*x$ with different A parameter values i.e. A=0,1,2,3 all on the same figure. I know how to plot simple functions i.e. $y=x$ by setting up x as a linspace vector so defining x=linspace(0,10,100); and I know that one can use the hold command.

I thought that one could simply use a for loop, but the problem then is getting a plot of all the permutations on one figure, i.e. I want a plot of y=t,2*t,3*t,4*t on the same figure. My attempt is as follows:

x=linspace(0,10,100);

%Simple example
Y=x;

figure;
plot(Y);

%Extension
B=3;

F=B*x;

figure;
plot(F);

%Attempt a for loop
for A= [0,1,2,3] 
G=A*x;

end

figure;
plot(G);

Upvotes: 1

Views: 593

Answers (1)

sclarke81
sclarke81

Reputation: 1769

This is how I would plot your for loop example:

figure;
hold all;
for A=[0,1,2,3] 
    G=A*x;
    plot(G);
end

figure creates a new figure. hold all means that subsequent plots will appear on the same figure (hold all will use different colours for each plot as opposed to hold on). Then we plot each iteration of G within the loop.

You can also do it without the loop. As with most things in Matlab, removing the loop should give improved performance.

figure;
A=[0,1,2,3];
G=x'*A;
plot(G);

G is the outer product of the two vectors x and A (with x having been transposed into a column vector). plot is used to plot the columns of the 100x4 matrix G.

Upvotes: 5

Related Questions