How can I create a cell array by combining arrays?

1 Ansicht (letzte 30 Tage)
Billie Jean
Billie Jean am 12 Nov. 2016
Bearbeitet: Jan am 14 Nov. 2016
Lets say;
names=['X1','X2','X3']
first=[1 2 3]
second=[4 5 6]
third=[7 8 9]
I need a cell array that is combination of these four arrays. It should be 1x4!
cellArray={['X','Y','Z'],[1 2 3],[4 5 6],[7 8 9]}
How can I write that code. horzcat is no good. Thanks!
  1 Kommentar
Jan
Jan am 14 Nov. 2016
Bearbeitet: Jan am 14 Nov. 2016
Note that
names=['X1','X2','X3']
is the same as
names='X1X2X3'
Therefore I cannot guess, what you want as output and how your input exactly should look like.

Melden Sie sich an, um zu kommentieren.

Antworten (2)

Ahmet Cecen
Ahmet Cecen am 12 Nov. 2016
Bearbeitet: Ahmet Cecen am 12 Nov. 2016
maybe this? mat2cell
it is unclear what you are trying to accomplish with the cell conversion, so this is the best I can do.

George
George am 12 Nov. 2016
What are you having trouble with? The code you posted works.
>> cellArray={['X','Y','Z'],[1 2 3],[4 5 6],[7 8 9]}
cellArray =
1×4 cell array
'XYZ' [1×3 double] [1×3 double] [1×3 double]
>>
  3 Kommentare
Ahmet Cecen
Ahmet Cecen am 14 Nov. 2016
Bearbeitet: Ahmet Cecen am 14 Nov. 2016
Oooh, string arrays are uncomfortable in MATLAB. Either do {'X','Y','Z'} or make a table() instead of a cell array.
['X','Y','Z'] is the concatenate constructor for strings, not an array.
Image Analyst
Image Analyst am 14 Nov. 2016
Billie Jean, please read the FAQ on cell arrays. I think it will help you understand. http://matlab.wikia.com/wiki/FAQ#What_is_a_cell_array.3F
With ['X','Y','Z'] you are concetnating 3 single characters to form a 1-by-3 character array, also known as a string. They are the same thing. In fact you can also set it to 'XYZ' and get the same thing. Just look:
>> s=['X','Y','Z']
s =
XYZ
>> whos s
Name Size Bytes Class Attributes
s 1x3 6 char
>> s='XYZ'
s =
XYZ
>> whos s
Name Size Bytes Class Attributes
s 1x3 6 char
Now, that string is inside the first cell of a 1-by-4 cell array. A single cell, like the first one , is a 1-by-1 array if you want to look at it that way. But because it's a cell, it can contain virtually anything inside it. And in this case, that first cell contains a 1x3 string (character array) inside it. Think of a cell like a bucket, and a cell array as an array of buckets. You can throw anything you want into the buckets: a string, a double array, a structure, a table, even another cell or cell array. Different buckets can contain anything - you're not required to have a whole column or whole row have the same data type in it. You can vary the contents of the buckets on a bucket-by-bucket basis. Again, read the FAQ - you won't regret it.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Characters and Strings finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by