3

我正在尝试在 Matlab 中创建一个元胞数组。我目前拥有的代码完全符合我的需要。问题基本上是,如果我注释掉任何不是第一行、中间行或最后一行的行,我会收到错误消息:

错误使用 ==> vertcat CAT 参数尺寸不一致。

我已经研究了一段时间,我发现另一个人有完全相同的问题......

http://www.programmersheaven.com/mb/ctocplusplustomatlab/424275/424275/mysterious-reason-for-cat-error-when-defining-cell-array/

...但是,这篇文章没有解决方案。

这是我的代码(4s 代表变量持有的可能整数值):

cell = {{4} ...
    {4} ...
    {4} ...
    {4} ...
    {} ...
    {4} ...
    {4} ...
    {4} ...
    {4} ...
    {4 4 4 4} ...
    {4} ...
    {4} ...
    {4} ...
    {4} ...
    {4} ...
    {4 4 4 4} ...
    {5} ...
    {} ...
    {4} ...
    {4} ...
    {} ...
    {} ...
    {} ...
    {} ...
    {} ...
    {} ...
    {} ...
    {} ...
    {} ...
    };

(我不能让它在这里看起来完全一样......在每个椭圆之后,代码在我的版本中移动到新行)

假设我注释掉其中包含 5 的行。它总是会返回连接错误。知道为什么会这样吗?

提前致谢,

妮可

4

2 回答 2

2

Matlab 将注释行解释为新行。尝试在您的单元格之间放置一个空行,您应该会看到相同的错误。如果在每个单元格后面加上分号,则可以避免该错误。

于 2012-06-21T18:38:03.843 回答
2

这是一个较小的示例:

c = {...
    {1}... % you can comment out this line
    {2}... % error when commenting this line
    {3}... % you can comment this line (will make a 2-by-2 array)
    {4}... % error when commenting this line
    {5}... % you can comment out this line
    }

注释行将被 Matlab 视为空行。连接时,一个(或多个)空行相当于一个分号,表示新行的开始。

最后,

c = {{1} {2}

     {3} {4}}

结果是一个 2×2 数组,相当于

c = {{1},{2};{3},{4}}

当你在每一行后面加上一个分号

c = {...
    {1};... 
    {2};... 
    {3};... 
    {4};...
    {5};... 
    }

任何被注释掉的行都将等同于分号,并且由于多个分号是合法的(c = {{1};;{2};}有效),您现在可以注释掉任意数量的行。

请注意,输出现在是 an-by-1而不是1-by-n数组,并且您不应该调用它cell,因为这是内置函数的名称。

于 2012-06-21T18:54:37.877 回答