I wish to concatenate two cell arrays together. I have two matrix with different sizes, and from what I understand the only possible way to concatenate them together is to use cell arrays. Here is my code
M = magic(3);
B = {magic(3) 'sip' magic(4) magic(3) }
C = {B; ...
B; ...
B; ...
B}
c1 = C{1}{1,1};
c2 = C{1}{1,3};
c{1} = c1; % after extracting matrix from cell array put it it
c{2} = c2; % into another cell array to attempt to concatenate
conca = [c{1};c{2}]; %returns error.
I'm getting the following error:
??? Error using ==> vertcat
CAT arguments dimensions are not
consistent.
Error in ==> importdata at 26
conca = [c{1};c{2}]; %returns error.
I assume this is your desired output:
conca =
[3x3 double]
[4x4 double]
Where conca{1}
is:
8 1 6
3 5 7
4 9 2
and conca{2}
is:
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
You were actually very close. All you need to is change the square braces to curly braces. Like this:
conca = {c{1};c{2}};
I actually do not get why you have used C
and not just did
conca = {B{1};B{3}}
That will give you the same cell array.
c{1}
refers to the content of a cell, i.e. a matrix in your case. [a b]
concatenates the enclosed content, i.e. two matrices (if of the same number of rows).
To concatenate two cell arrays, refer to them as such. To refer to single cells of a cell array, you can use ()
, e.g. c(1)
. Thus,
[c(1) c(2)]
works (or [c(1);c(2)]), but for this example,
c(1:2)
is preferable (or c(1:2)'
for a column instead of a row).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With