2017-11-25 111 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和其他類似的。