plot intermediate value in a for statement
Show older comments
Hello,
I have a for statement , with n= 1:1024.
I would like to plot intermediate value result at 64, and 256. instead of doing 3 for statement (1:64, 1:256, 1:1024),
how Can I plot 3 curves with a single for?
I write my code to let you understand better.
n=[1:1024];
d1range=10:100
for k = 1:length(d1range)
.
.
.
.
for j = 1:length(n)
LRIS(k)=LRIS(k)+((sqrt((1/(Lsrpw02(k)*Lrdpw08(k))))));
%conversione in DB
end
LRIS2(k)=LRIS(k)^(-2);
LRISDB(k)=pow2db( LRIS2(k));
end
hold on; box on;
plot(d1range,LRISDB(:,1),'b-o','LineWidth',1);
11 Comments
Please apply the methods to format the code to improve the readability. Thanks.
This loop is strange:
for j = 1:length(n)
LRIS(k)=LRIS(k)+((sqrt((1/(Lsrpw02(k)*Lrdpw08(k))))));
%conversione in DB
end
This adds the same value 1024 times, because the loop body does not depend on the loop counter j. By the way, avoid unnecessary parentheses to improve the readability:
LRIS(k) = LRIS(k) + 1 / sqrt(Lsrpw02(k) * Lrdpw08(k));
The actual question is not clear to me: "plot intermediate value result at 64, and 256". Which intermediate values? At 64 what?
vincenzo violi
on 9 Jan 2021
Edited: vincenzo violi
on 9 Jan 2021
Jan
on 9 Jan 2021
If you want to add the value 1024 time, simply write:
LRIS(k) = LRIS(k) + 1024 / sqrt(Lsrpw02(k) * Lrdpw08(k));
without a loop.
Maybe the dots hide important parts of your code, but as far as I can see, the loop over k is not required also. Then running the code for 64, 256 and 1024 elements should be easy.
vincenzo violi
on 9 Jan 2021
Jan
on 9 Jan 2021
You are welcome. It is not trivial to explain a problem, because it is a problem. It all details are clear to you already, it would not be a problem anymore. So feel encouraged to explain it again until you get the solution you need.
vincenzo violi
on 9 Jan 2021
Walter Roberson
on 10 Jan 2021
LRIS(k) = LRIS(k) + 1 / sqrt(Lsrpw02(k) * Lrdpw08(k));
if ismember(k, [64 256 1024])
do whatever plotting is appropriate
end
vincenzo violi
on 10 Jan 2021
Edited: vincenzo violi
on 10 Jan 2021
Jan
on 10 Jan 2021
I do not understand what "L(k) for 64 times" mean. But as Walter I assume, that this is the solution:
if any(k == [64, 256, 1024])
plot()
end
If you want something to happen, when k==64, let it happen inside the if branch, not after the loops are finished.
Walter Roberson
on 10 Jan 2021
LRIS(k) = LRIS(k) + 1 / sqrt(Lsrpw02(k) * Lrdpw08(k));
if ismember(k, [64 256 1024])
do whatever plotting is appropriate
hold on
end
Walter Roberson
on 10 Jan 2021
If j=64 && j==256 && 1024
To use that form of code you would instead need
if j == 64 || j == 256 || j == 1024
Answers (1)
vincenzo violi
on 10 Jan 2021
0 votes
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!