How to create matrices and change matrix names in a for loop (Sprint and Eval) ?

7 ビュー (過去 30 日間)
ARS
ARS 2013 年 6 月 7 日
Hi,
I have the following loop.
periods=28
*for z=1:periods
Period(z)Return{s,j}= open - close
FReturnLMS{s,k} = Period(z)Return{s,j}
end;*
All loops are working except the z in * Period(z)Return{s,j}*. Please ignore s and j & k as they work fine. Only evaluating z is an issue. I am having trouble in deploying sprintf and eval.
Also please tell if there is a detailed source to understand the usage of Sprintf and eval.
All help will be appreciated.
Regards,
AMD.

採用された回答

Iain
Iain 2013 年 6 月 7 日
Period(z)Return{s,j} looks like a structure, but it seems to be missing the "." that would make it work. Period(z).Return{s,j}
eval simply evaluates the string you pass to it, as if it was entered at command line, in the current workspace.
  1 件のコメント
Iain
Iain 2013 年 6 月 7 日
In light of your comment:
for z=1:periods
eval(['Period' num2str(z) 'Return{s,j}= open - close;'])
eval(['FReturnLMS{s,k} = Period' num2str(z) 'Return{s,j};'])
end
I would suggest that you consider just making it a 3D cell array {s,j,z}, or a cell array containing cell arrays {z}{s,j}

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

その他の回答 (1 件)

ARS
ARS 2013 年 6 月 7 日
Hi,
No, I wish to retain it as a cell array and thats why it ends with {}. I want the cell array name to be from Period1Return to Period28Return using loop and values assigned using
  • Period(z)Return{s,j}= open - close*
Thanks.

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by