我希望将两个单元阵列连接在一起。我有两个不同大小的矩阵,根据我的理解,将它们连接在一起的唯一可能方法是使用单元格数组。这是我的代码
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.
我收到以下错误:
??? Error using ==> vertcat
CAT arguments dimensions are not
consistent.
Error in ==> importdata at 26
conca = [c{1};c{2}]; %returns error.
答案 0 :(得分:5)
我认为这是你想要的输出:
conca =
[3x3 double]
[4x4 double]
conca{1}
的位置:
8 1 6
3 5 7
4 9 2
和conca{2}
是:
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
你其实很亲密。您需要的只是将方括号更改为花括号。像这样:
conca = {c{1};c{2}};
我实际上不明白为什么你使用了C
而不仅仅是
conca = {B{1};B{3}}
这将为您提供相同的单元格数组。
答案 1 :(得分:4)
c{1}
指的是单元格的内容,即您的情况下的矩阵。 [a b]
连接所包含的内容,即两个矩阵(如果行数相同)。
要连接两个单元阵列,请按此类引用它们。要引用单元格数组的单个单元格,您可以使用()
,例如c(1)
。因此,
[c(1) c(2)]
有效(或[c(1); c(2)]),但对于此示例,
c(1:2)
最好(或c(1:2)'
表示列而不是行。