フィルターのクリア

How to loop through a set of variables Y1..Y100

52 ビュー (過去 30 日間)
Ahmed AKL
Ahmed AKL 2018 年 2 月 28 日
編集済み: Stephen23 2019 年 6 月 27 日
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
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
Stephen23 2018 年 3 月 1 日
編集済み: Stephen23 2018 年 3 月 1 日
"Do you have a solution for this?"
Yes, as I already wrote, just load the data into a variable. This was also explained in the tutorial that I gave you a link to: did you read it? See my answer for how this can be applied to your situation.

サインインしてコメントする。

採用された回答

Stephen23
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:

その他の回答 (1 件)

jonas
jonas 2018 年 2 月 28 日
編集済み: jonas 2018 年 3 月 1 日
Try this:
figure;hold on
for i=1:100;
plot(eval(sprintf(['Y',num2str(i)])));
end
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.
  2 件のコメント
Ahmed AKL
Ahmed AKL 2018 年 2 月 28 日
Thanks a lot.
It works fine. but I made a small change to plot the real value without the imaginary part
plot(real ( eval(sprintf(['Y',num2str(i)]))) );
Stephen23
Stephen23 2018 年 3 月 1 日
編集済み: Stephen23 2018 年 3 月 1 日
Even better would be to import the data properly so that slow and buggy eval is not required.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeWhos についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by