web-dev-qa-db-ja.com

MATLABで文字列のリストを反復処理する

MATLABの文字列のリストを反復処理しようとしています。問題は、「for」ループ内で、イテレーターが文字列ではなく「セル」と見なされることです。

for str = {'aaa','bbb'}
  fprintf('%s\n',str);
end

??? Error using ==> fprintf
Function is not defined for 'cell' inputs.

これを修正する正しい\エレガントな方法は何ですか?

25
wanderingbear

セルのコンテンツを修正するには、次のようにstr{1}を介してセルのコンテンツを呼び出す必要があります。

for str = {'aaa','bbb'}
  fprintf('%s\n',str{1});
end

以下は、セル配列の内容の印刷に関する より洗練された例 です。

29
petrichor
str={'aaa','bbb'};
fprintf('%s\n',str{:});

forループは不要です。

編集:参照:cellfun

6
KitsuneYMG

R2016b以降では、 文字列配列 を使用できます。

for str = ["aaa" "bbb"]
  fprintf('%s\n',str);
end
1
joalv