web-dev-qa-db-ja.com

Matlab配列に文字列を追加

Matlabの配列列に文字列を追加するにはどうすればよいですか?

ここに私がやろうとしていることの小さなコードスニペットがあります:

for_loop
  filename = 'string';
  name=[name; filename]
end
29
Name

セル配列を使用する必要があります。反復回数が事前にわかっている場合は、事前に割り当てることをお勧めします。

N = 10;
names = cell(1,N);
for i=1:N
    names{i} = 'string';
end

そうでなければ、次のようなことができます:

names = {};
for i=1:10
    names{end+1} = 'string';
end
82
Amro

他の回答で指摘したように、 セル配列 を使用するのがおそらく最も簡単なアプローチであり、変数nameは各セル要素に文字列が含まれるセル配列になります。

ただし、関数 [〜#〜] strvcat [〜#〜] を使用する別のオプションがあり、文字列を垂直に連結します。セル配列を作成する代わりに、各行に1つの文字列を含む2次元文字マトリックスを作成します。 [〜#〜] strvcat [〜#〜] 必要に応じて、文字列の末尾にスペースを自動的に埋め込み、マトリックスの行を正しく埋めます。

>> string1 = 'hi';
>> string2 = 'there';
>> S = strvcat(string1,string2)

S =

hi
there
9
gnovice

他の場所で述べたように、MATLABでは、配列内のすべての文字列は同じ長さでなければなりません。異なる長さの文字列を使用するには、セル配列を使用します。

name = {};
for i = somearray
  name = [name; {string}];
end
5
lindelof

ループを使用せずに1行のコードを使用して追加するには、strcat関数を使用します。

A={'food','banana','orange'}

A =「食べ物」「バナナ」「オレンジ」

A = strcat(A,'s')

A =「食品」「バナナ」「オレンジ」

4
bornTalented
name=[];
for_loop
    filename = 'string';
    name=[name; {filename}];
end
3
Babak

完全を期すために、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)。

string コンテナは、 文字配列 および 文字のセル配列 との間で変換することもできます。

1
Amro

以下のような2つの配列(AおよびB)を使用している場合、他の行列で行うようにそれらを追加できます。

A = {'a' ; 'b' ; 'c'};
B = {'1' ; '2' ; '3'};
Result = { A{:,1} ; B{:,1} }

Result = 

'a'    'b'    'c'
'1'    '2'    '3'
1
MJay

私はこれが古いスレッドであることを知っていますが、ループ内でこれを行うのがこれだけである場合、ループを必要としないようです。縦の連結だけを使用できますか?

   mmm = {'str1'; 'str2'; 'str3'};
   temp = {'a'; 'b'; 'c'};

   mmm = [mmm; temp]

mmm = 

    'str1'
    'str2'
    'str3'
    'a'
    'b'
    'c'
0
Jon Tran