Matlabの配列列に文字列を追加するにはどうすればよいですか?
ここに私がやろうとしていることの小さなコードスニペットがあります:
for_loop
filename = 'string';
name=[name; filename]
end
セル配列を使用する必要があります。反復回数が事前にわかっている場合は、事前に割り当てることをお勧めします。
N = 10;
names = cell(1,N);
for i=1:N
names{i} = 'string';
end
そうでなければ、次のようなことができます:
names = {};
for i=1:10
names{end+1} = 'string';
end
他の回答で指摘したように、 セル配列 を使用するのがおそらく最も簡単なアプローチであり、変数name
は各セル要素に文字列が含まれるセル配列になります。
ただし、関数 [〜#〜] strvcat [〜#〜] を使用する別のオプションがあり、文字列を垂直に連結します。セル配列を作成する代わりに、各行に1つの文字列を含む2次元文字マトリックスを作成します。 [〜#〜] strvcat [〜#〜] 必要に応じて、文字列の末尾にスペースを自動的に埋め込み、マトリックスの行を正しく埋めます。
>> string1 = 'hi';
>> string2 = 'there';
>> S = strvcat(string1,string2)
S =
hi
there
他の場所で述べたように、MATLABでは、配列内のすべての文字列は同じ長さでなければなりません。異なる長さの文字列を使用するには、セル配列を使用します。
name = {};
for i = somearray
name = [name; {string}];
end
ループを使用せずに1行のコードを使用して追加するには、strcat
関数を使用します。
A={'food','banana','orange'}
A =「食べ物」「バナナ」「オレンジ」
A = strcat(A,'s')
A =「食品」「バナナ」「オレンジ」
name=[];
for_loop
filename = 'string';
name=[name; {filename}];
end
完全を期すために、MATLAB R2016bで導入された新しい string
class も言及する必要があります。テキストを簡単に操作するための一連の関数とともにテキストデータのコンテナー。
それを私の 他の例 と比較するために、ここに string array を割り当てる方法があります:
N = 10;
names = strings(1,N);
for i=1:N
names(i) = 'string';
end
また、事前割り当てなしで配列を動的に拡張する方法は次のとおりです。
names = strings(0);
for i=1:10
names(end+1) = 'string';
end
(もちろん、文字列がすべて同じであるか、パターンを持つシーケンスを形成する場合、ループなしで配列を作成するより良い方法があります。上記は配列1を埋める例にすぎません-by-one)。
以下のような2つの配列(AおよびB)を使用している場合、他の行列で行うようにそれらを追加できます。
A = {'a' ; 'b' ; 'c'};
B = {'1' ; '2' ; '3'};
Result = { A{:,1} ; B{:,1} }
Result =
'a' 'b' 'c'
'1' '2' '3'
私はこれが古いスレッドであることを知っていますが、ループ内でこれを行うのがこれだけである場合、ループを必要としないようです。縦の連結だけを使用できますか?
mmm = {'str1'; 'str2'; 'str3'};
temp = {'a'; 'b'; 'c'};
mmm = [mmm; temp]
mmm =
'str1'
'str2'
'str3'
'a'
'b'
'c'