For loop - what about my min and max values?
1 view (last 30 days)
Show older comments
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
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
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)
Accepted Answer
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)
More Answers (0)
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!