Matlab 二维单元阵列中的倍频程附加
我试图在2D单元格数组行的末尾追加一个元素。我的代码是:Matlab 二维单元阵列中的倍频程附加,matlab,octave,cell-array,Matlab,Octave,Cell Array,我试图在2D单元格数组行的末尾追加一个元素。我的代码是: b = cell(5, 0) b(1) = {b(1, :), 2} % Trying to append at the end of the first row 这给了我一个错误:error:A(I)=X:X必须与I具有相同的大小 我还尝试了各种其他形式,例如: b = cell(5, 0) b(1, end+1) = 2 % Ok, inserts 2 at [1,1] b(2, end+1) = 3 % No, ins
b = cell(5, 0)
b(1) = {b(1, :), 2} % Trying to append at the end of the first row
这给了我一个错误:error:A(I)=X:X必须与I具有相同的大小
我还尝试了各种其他形式,例如:
b = cell(5, 0)
b(1, end+1) = 2 % Ok, inserts 2 at [1,1]
b(2, end+1) = 3 % No, inserts 3 at [2,2] instead of [2, 1]
您似乎对单元格数组索引感到困惑
如果要在矩阵(在您的情况下是单元格数组)中的行末尾追加元素,则必须确保赋值后所有行的大小相同,否则将触发有关维度不匹配的错误
与b(1)={b(1,:),2}
不同的是,以下方法应该有效:
b(1, end + 1) = 2
或者,如果要将整列单元格数组附加到b
,请使用水平连接,例如:
b = [b, {2; 3; 4; 5; 6}];
这应该在b
的每一行末尾附加一个单元格。元素被插入[2,2]
而不是[1,1]
的原因是,当您尝试插入第二个元素时,end
表示的值已从0
增加到1
以下内容应满足您的需要:
>> b = cell(5, 0)
b =
Empty cell array: 5-by-0
>> b(1,1) = {2}
b =
[2]
[]
[]
[]
[]
>> b(2,1) = {3}
b =
[2]
[3]
[]
[]
[]
>>
为什么b(2,end+1)=3
在[11]
插入3
?对不起,我实际上是指[21]
实际上,我知道会有5行。但我事先不知道每行将包含多少列。在这种情况下如何初始化单元格数组?@RafiKamal你的问题不清楚,但现在我明白了。您已经很好地初始化了单元数组,只需水平连接即可。我已经修改了答案。