4

我希望将两个单元格数组连接在一起。我有两个不同大小的矩阵,据我所知,将它们连接在一起的唯一可能方法是使用单元格数组。这是我的代码

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.
4

2 回答 2

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}}

这将为您提供相同的单元格数组。

于 2013-02-28T13:43:29.883 回答
4

c{1}指单元格的内容,即您的情况下的矩阵。[a b]连接封闭的内容,即两个矩阵(如果行数相同)。

要连接两个元胞数组,请照此引用它们。要引用元胞数组的单个元胞,您可以使用(),例如c(1)。因此,

[c(1) c(2)]

工作(或 [c(1);c(2)]),但对于这个例子,

c(1:2)

是可取的(或者c(1:2)'对于一列而不是一行)。

于 2013-02-28T13:43:37.013 回答