通过连接字符串来定义变量

时间:2017-11-25 14:59:32

标签: matlab eval string-concatenation

我想迭代地定义一个变量,其名称是两个字符串的串联。

特别是,以下代码旨在创建一个变量 Uvel_spring ,其中包含存储在 spring_surface.mat 文件中的值 Uvel

seasons{1}='spring';
seasons{2}='summer';
seasons{3}='autumn';
seasons{4}='winter';

for ii=1:4

    ['Uvel_',char(seasons(ii))] = load([char(seasons(ii)),'_surface.mat'],...
             'Uvel');

end

但是,我收到以下错误:

  

多个LHS分配的数组不能包含LEX_TS_STRING。

我使用evalc

解决了这个问题
for ii=1:4

   evalc( sprintf(['Uvel_',char(seasons(ii)),'=','load(''',char(seasons(ii)),'_surface.mat'',',...
             '''Uvel''',')']) );

end

然而,这很糟糕,我想改进代码。

有人有替代解决方案吗?

1 个答案:

答案 0 :(得分:2)

改为使用struct

for ii=1:4
    Uvel.(seasons{ii}) = load([seasons{ii},'_surface.mat'], 'Uvel');
end

你最终将这四季作为Uvel的领域。因此,您将Uvel_spring作为Uvel.spring访问,对其他人也是如此。