MATLAB Answers

For loop - what about my min and max values?

10 views (last 30 days)
Tom
Tom on 11 Dec 2011
For loop - what about my min and max values? I'm using a for loop and although my plot is right, I'm only seeing my maximum x-axis value in the Workspace Max column. Is there a way to have the Min and Max columns actually correct?
Many thanks
iter=1;
for f=50:1000
rho_a=1.2041;
sigma=11000;
phi=0.99;
alpha=1;
c=343.26;
i=sqrt(-1);
L=0.1;
a=0.03;
k_a=(2*pi*f)/c;
k_2=((2*pi*f)/c)*sqrt(alpha-((i*sigma*phi)/(2*pi*f*rho_a)));
z_c_2=((rho_a*c)/phi)*sqrt(alpha-((i*sigma*phi)/(2*pi*f*rho_a)));
z_1=(z_c_2*cot(k_2*L)*(cos(k_a*a)+(i/(rho_a*c))*sin(k_a*a)))/(i*cos(k_a*a)-(1/(rho_a*c))*sin(k_a*a));
R=((z_1/(rho_a*c))-1)/(1+(z_1/(rho_a*c)));
Rrec(iter)=R;
AbsCoef=1-(real(R))^2;
AbsCoefrec(iter)=AbsCoef;
z_1rec(iter)=z_1;
iter=iter+1;
end
plot(50:1000,AbsCoefrec)

  2 Comments

Jan
Jan on 11 Dec 2011
What is "the maximum x-axis value" and what is the "Workspace Max column"? And how is the correctness of the "Min and Max columns" defined? What the is the relation between the question and the code?
To improve the code (dramatically!) look in this forum for the term "pre-allocation".
David Young
David Young on 11 Dec 2011
i is already defined in Matlab - as long as you haven't redefined it earlier in the program you don't need to do i = sqrt(-1)

Sign in to comment.

Accepted Answer

bym
bym on 11 Dec 2011
Your x axis is the loop variable f, which can only take on one value at a time, thus the min and max are the same. To do what you want, you would have to modify your code something like this
freq = 50:1000;
AbsCoefrec = zeros(size(freq)); % preallocate!
for f = freq
% ---insert code here---
end
plot(freq,AbsCoefrec)

  1 Comment

Tom
Tom on 11 Dec 2011
right okay. is req the same as rec?
many thanks for that

Sign in to comment.

More Answers (0)

Sign in to answer this question.