2016-12-12 11 views
0

で文字と整数値を連結:Matlabの - 私のように特定の番号を持つベクトルを持つベクトル

A=[1 2 3]; 

そして、私のように別のベクトルを取得する必要があります:私は文字を混在させることはできませんので

B=[G1 G2 G3]; 

そして、ダブルスは、私がやってセル配列に行列Aを変換しようとした:

num2cell(num2str(A)) 

をそして実行します

strcat(A, 'G') 

希望の結果を得るには。しかし、num2cellを実行すると、空白のセル値が得られます(obxの代わりに3x1のセル配列、Nx1を取得します)。

+1

あなたの質問は意味をなさない。 Bは、変数の配列です。 –

+0

はおそらく明瞭ではありませんが、Gはcharであり、数値は整数です。それは以下で解決されます。 – Pep

答えて

2

問題は、num2cellは、すべての1文字をデフォルトで別のセル配列要素にすることです。単にあなただけの新しい行にAで各番号の各文字列表現を配置Aの列ベクトルのバージョンにnumstrを使用することができ、すべての要素にGを連結する

num2cell(num2str(A)) 
% '1' ' ' ' ' '2' ' ' ' ' '3' 

strcatは、それぞれの行の先頭に'G'となります。それをセル配列として使用したい場合は、cellstr呼び出しでそれをラップしてセル配列を取得することができます。

output = cellstr(strcat('G', num2str(A(:)))) 

代わりにあなたはBは、あなたは、単にsprintfを使用することができ、すべてのこれらの値で単一の文字列になりたい場合は、あなただけのA

output = arrayfun(@(x)sprintf('G%d', x), A, 'UniformOutput', false) 
+0

ありがとう!今はうまくいく。 – Pep

0

に各要素に対してsprintfを使用することができます。この関数は2番目の引数としてベクトルを受け入れますので、Aのすべての値に同じ文字を追加するのは非常に簡単です。

B = sprintf('G%d ', A); 

これはあなたの最後のエントリ(すなわち'G1 G2 G3 ')の後、末尾のスペースを残すだろうが、とても、これは容易に除去できることに注意してください:

B(end) = []; 

は、より多くの例についてはdocumentation on sprintfを参照してください。

関連する問題