我想迭代地定义一个变量,其名称是两个字符串的串联。
特别是,以下代码旨在创建一个变量 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
然而,这很糟糕,我想改进代码。
有人有替代解决方案吗?
答案 0 :(得分:2)
改为使用struct
。
for ii=1:4
Uvel.(seasons{ii}) = load([seasons{ii},'_surface.mat'], 'Uvel');
end
你最终将这四季作为Uvel
的领域。因此,您将Uvel_spring
作为Uvel.spring
访问,对其他人也是如此。