plot intermediate value in a for statement
显示 更早的评论
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 个评论
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
2021-1-9
编辑:vincenzo violi
2021-1-9
Jan
2021-1-9
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
2021-1-9
Jan
2021-1-9
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
2021-1-9
Walter Roberson
2021-1-10
LRIS(k) = LRIS(k) + 1 / sqrt(Lsrpw02(k) * Lrdpw08(k));
if ismember(k, [64 256 1024])
do whatever plotting is appropriate
end
vincenzo violi
2021-1-10
编辑:vincenzo violi
2021-1-10
Jan
2021-1-10
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
2021-1-10
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
2021-1-10
If j=64 && j==256 && 1024
To use that form of code you would instead need
if j == 64 || j == 256 || j == 1024
回答(1 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!