2017-11-25 28 views
0

2つの文字列を連結した名前の変数を繰り返し定義します。文字列を連結して変数を定義する

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 

は、しかし、私は次のエラーを取得する:特に

は、次のコードは、 Uvelspring_surface.matファイルに格納された値を含む変数 Uvel_springを作成するためのものです:

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 

これらの4つのシーズンは、Uvelというフィールドになります。したがって、Uvel_springにはUvel.springと同様にアクセスし、他の場合も同様です。

関連する問題