Printing string as a variable

5 ビュー (過去 30 日間)
rob
rob 2017 年 9 月 20 日
回答済み: Rik 2017 年 9 月 20 日
I have a table (mytable)with 'm' rows and I am trying to add multiple empty columns with names that are in ascending numerical order (variable_01var, variable_02var etc) :
for i = 1:16
number = sprintf('%02d',i);
variable = insertAfter('mytable.variable_var', '_', number)
sprintf(variable) = zeros(m,1);
end
I am not sure how to get the generated variable name printed as a variable though?
Any help much appreciated, thanks!
Rob
  3 件のコメント
rob
rob 2017 年 9 月 20 日
Thanks Rik, I am using the data type 'table'. Would you be able to advise how to do this? I.e. how to generate a set of columns with names defined in a for loop?
Stephen23
Stephen23 2017 年 9 月 20 日
" I am trying to add multiple empty columns with names that are in ascending numerical order (variable_01var, variable_02var etc)"
Do NOT do this.
Read what the MATLAB documentation has to say about this: "A frequent use of the eval function is to create sets of variables such as A1, A2, ..., An, but this approach does not use the array processing power of MATLAB and is not recommended. The preferred method is to store related data in a single array"
You should also read this:
and after that keep your data in one array and use indexing, or use a table.

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

採用された回答

Rik
Rik 2017 年 9 月 20 日
If your table is called mytable, you can create a new column the same way as you can add a field to a struct:
for i = 1:16
number = sprintf('%02d',i);
variable = insertAfter('variable_var', '_', number)
mytable.(variable) = zeros(m,1);
end
And why not use this:
for i = 1:16
variable = sprintf('variable_%02dvar',i);
mytable.(variable) = zeros(m,1);
end

その他の回答 (0 件)

カテゴリ

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

Community Treasure Hunt

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

Start Hunting!

Translated by