How to change the name of variables using a loop?

I need to do the same matrix calculations repeatedly, but I want to rename the variable within the loop. e.g. I need matrices R_1 R_2 R_3 R_4. I want to be able to set matrix R_1=( calcs for ii=1); R_2=( calcs for ii=2), etc. I know I can convert ii to a string using num2str(ii), but how do I concatenate that to R? R_ii=(calcs for ii)?
Am I going to need some sort of cell array to do that? I'm trying to avoid cells.

3 件のコメント

Stephen23
Stephen23 2014 年 9 月 25 日
Don't avoid cell arrays. They are just what you need in this kind of situation... except perhaps when a struct would be better.
José-Luis
José-Luis 2014 年 9 月 25 日
編集済み: José-Luis 2014 年 9 月 25 日
Are all those variables the same size? If so then just store them in an array:
for ii = 1:n
your_mat(:,ii) = something;
end
Stephen23
Stephen23 2014 年 9 月 25 日
編集済み: Stephen23 2014 年 10 月 10 日
José-Luis: good point. This should include array preallocation though:
for ii = n:-1:1
your_mat(:,ii) = something;
end

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

 採用された回答

Stephen23
Stephen23 2014 年 9 月 25 日
編集済み: Stephen23 2014 年 9 月 25 日

0 投票

In MATLAB it is (almost always) better to not create variable names on the fly:
Use a cell or struct instead.
I know you were looking for a tidy solution... this is the tidy solution.

その他の回答 (2 件)

Iain
Iain 2014 年 9 月 25 日

1 投票

Cells ARE the way to go.
Structures would be preferable to what you want
mystruct.description = 'blah blah';
mystruct = setfield(mystruct,['R_' num2str(ii) ], values);
However, sometimes, in rare cases, not using a monolithic storage solution is the only practical option. This option should be avoided whenever possible.
eval(['R_' num2str(ii) ' = values;']);
Titus Edelhofer
Titus Edelhofer 2014 年 9 月 25 日

0 投票

Hi Kathleen,
why do you want to avoid cells? They are a perfect fit - and much cleaner/safer/easier to use than any clumsy and error prone variable creation based on names and indices ...?
Titus

カテゴリ

ヘルプ センター および File ExchangeCreating and Concatenating Matrices についてさらに検索

質問済み:

2014 年 9 月 25 日

編集済み:

2014 年 10 月 10 日

Community Treasure Hunt

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

Start Hunting!

Translated by