2017-11-25 73 views
0

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

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

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 

不过,我得到以下错误:

An array for multiple LHS assignment cannot contain LEX_TS_STRING.

我解决它通过使用evalc

for ii=1:4 

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

end 

但是,这是可怕的,我想改善代码。

有人有其他解决方案吗?

回答

2

改为使用struct

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

你会最终有这四个季节作为Uvel的领域。所以你将访问Uvel_spring作为Uvel.spring和其他类似的。