How to loop through a set of variables Y1..Y100
52 次查看(过去 30 天)
显示 更早的评论
Hi,
I've a group of matrix named Y1 .. Y100. Each matrix is 7244x1 (complex number).
I want to loop through them (Y1..Y100) so in each iteration I can plot the 7244x1 values.
How can I iterate through them?
Thanks in advance
6 个评论
Ahmed AKL
2018-3-1
Sure, it will be nice if you can find a way to import the data in a better format.
The analyzer captures the RF signal and exports it to a .mat file (it doesn't give me any option to configure the format). Then I go to Matlab and load the .mat file, so I've a punch of data in my workspace as I explained in the question.
Do you have a solution for this?
采纳的回答
Stephen23
2018-3-1
编辑:Stephen23
2019-6-27
"it will be nice if you can find a way to import the data in a better format."
Of course, it is simpler and more efficient to load into an output a structure and then access its fieldnames:
figure()
hold on
S = load(...);
For k = 1:100
plot(real(S.(sprintf('Y%d',k))))
end
So easy! By simply avoiding eval I wrote more efficient code using fewer characters: when beginners learn to avoid eval then they also write simpler, less buggy, more efficient code:
0 个评论
更多回答(1 个)
jonas
2018-2-28
编辑:jonas
2018-3-1
Try this:
figure;hold on
for i=1:100;
plot(eval(sprintf(['Y',num2str(i)])));
end
For more info: https://se.mathworks.com/matlabcentral/answers/57445-faq-how-can-i-create-variables-a1-a2-a10-in-a-loop
EDIT: For future reference, Stephen gave a better solution below. Only use EVAL() if it is absolutely necessary (which it rarely is, if ever?). See link for more info.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Whos 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!