通过连接字符串定义变量

define variable by concatenating strings

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

特别是,以下代码旨在创建一个变量 Uvel_spring,其中包含存储在文件 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

但是,这太可怕了,我想改进代码。

有人有替代解决方案吗?

改用struct

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

您最终会将这四个季节作为 Uvel 的字段。因此,您将以 Uvel.spring 的方式访问 Uvel_spring,其他人也同样如此。