2016-08-09 3 views
2

次のように私は、文字列配列を作成しようとすると、私は連結した文字列になります(または1×6の配列?)。私は得ることが期待Matlabで水平文字列配列を作成できないのはなぜですか?

>> [ 'A1' 'A2' 'A3'] 
ans = A1A2A3 

['A1' 'A2' 'A3']のような3つの要素を持つ文字列の配列です。

私は最初の垂直文字列配列を作成し、それを転置しようとした場合、私が得る:

>> transpose([ 'A1'; 'A2'; 'A3']) 
ans = 

AAA 
123 

をこれは文字列のリストを作成する上でのpythonからとても異なっています。私はなぜ「A1」と「A2」と「A3」が別々のものではなく、むしろ一緒に連結しているのか分かりません。私はかなり理解していないいくつかの原則があるようです。誰かが説明できることを願っています。ありがとう! Pythonで

+0

を使用する必要がありますあなたは質問にそれを自分で言った:それは異なっています**リスト**の文字列を作成するより。 '['と ']'シンボルは**配列**の連結のためのものです。 Matlabには基本_list_型はありませんが、長さの異なる要素を格納できる唯一の型は['セル配列'](http://uk.mathworks.com/help/matlab/cell-arrays.html)です。 – Hoki

答えて

4

、あなたはstrインスタンスを含むlistを持っています。 MATLAB、array

A = ['A1', 'A2', 'A3'] 
type(A) 
# <type 'list'> 

type(A[0]) 
# <type 'str'> 

技術的にすべてのデータ型が本質的に配列されているので、それ自体のデータ型ではありません。たとえば、'A1'は、タイプがcharの2要素配列です。

[]を使用して複数のマルチchar文字列を囲むと、値が連結され、出力もcharになります。あなたの場合、これはすべての入力char配列を1つの6要素文字配列に連結します。

A = ['A1', 'A2', 'A3']; 
class(A) 
% char 

size(A) 
% 1 6 

あなたはそれぞれの要素が非スカラーである配列(および潜在的に異なるデータ型を)したい場合は、セル配列

A = {'A1', 'A2', 'A3'} 
+0

したがって、角括弧 '[]'は、データ型を作成するのではなく、連結するためにのみ使用されます。連結時に '[]'によって生成されるデータ型は、 '[]'内部の入力データ型に依存します。対照的に、中括弧 '{}'は、データ型の一種であるセル配列の作成に使用できます。間違いがあれば修正してください。 –

+0

@KenTうわー!それはまさにそれがすることです。 – Suever

関連する問題