在MATLAB中从其他变量创建变量:具有再现的代码

时间:2017-10-03 11:46:35

标签: matlab variables

我对这类代码有疑问:

First = ["A","B","C"];
Second = ["D","E","F"];
Group = ["First", "Second"];
for gr = Group
    current = gr;        
    for number = 1:numel(current)                
        my_variable(number) = current(number);     
    end
end

这是我的问题的再现。在这种情况下,my_variable等于"First"。但我希望"A"然后"B"然后"C"来自名为"First"的变量。

根据我的理解,此代码应执行以下操作:

  • 第一步:for gr = Group表示gr = First to Second
  • 第二步:current = gr;表示当前=第一
  • 第3步:for number = 1:numel(current)表示数字= 1:3(“第一”中的元素数量)
  • 第4步:my_variable(number) = current(number);表示my_variable = First(1)=“A”

而不是我my variable等于"First""Second"

我希望你理解我的意思。

P.S。 string arrays我使用的是双引号(" "),例如First = ["A","B","C"];,只能在Matlab 2016b或更高版本中使用。

1 个答案:

答案 0 :(得分:2)

您应该使用cell arrays执行此操作:

first = {'A','B','C'};
second = {'D','E','F'};
group = {first, second};
for group_ind = 1:numel(group)
    current = group{group_ind};
    my_variable = cell(1,numel(current));
    for number = 1:numel(current)
        my_variable{number} = current{number};
        disp(my_variable)
    end
end

对于firstsecond,您还可以使用字符串数组:

first = ["A","B","C"];
second = ["D","E","F"];
group = {first, second};
for group_ind = 1:numel(group)
    current = group{group_ind};
    my_variable = strings(1,numel(current));
    for number = 1:numel(current)
        my_variable(number) = current(number);
        disp(my_variable)
    end
end