我有一个包含4个向量的单元格,我想扩展它以便它可以容纳另一个向量。提前谢谢。
a = cell(4, 1);
a{1} = [1, 2, 3];
a{2} = [1, 4, 9];
a{3} = [1, 4, 9];
a{4} = [1; 5];
我想添加一个新的矢量[2,7],这样我就可以得到这个
a{1} = [2, 7];
a{2} = [1, 2, 3];
a{3} = [1, 4, 9];
a{4} = [1, 4, 9];
a{5} = [1; 5];
我怎么能这样做?
答案 0 :(得分:5)
a = cell(4, 1);
a{1} = [1, 2, 3];
a{2} = [1, 4, 9];
a{3} = [1, 4, 9];
a{4} = [1; 5];
a = [[2, 7];a]
产量:
a =
[1x2 double]
[1x3 double]
[1x3 double]
[1x3 double]
[2x1 double]
答案 1 :(得分:1)
您尝试执行的操作的名称是concatenation。在MATLAB中,square brackets是一种隐式的连接方法。虽然您通常认为这些用于连接数字以形成向量或矩阵:
x = [1, 2, 3, 4] % 1 x 4
您还可以使用它们来连接其他数据类型(包括单元格数组)
y = [{1,2}, 5, {4, 5}]; % 1 x 3 Cell Array
跟踪串联的维度也很重要。使用方括号,您可以使用逗号或跨行(第一维使用分号)跨列(第二维)连接。
size([1,2,3])
1 x 3
size([1;2;3])
3 x 1
虽然方括号是一种快速简便的解决方案,但我更喜欢更明确一些。为此,MATLAB具有以下功能:cat
,horzcat
和vertcat
。我个人更喜欢cat
,因为您可以在任意维度中指定连接。
x = cat(2, 100, 200, 300); % 1 x 3
100 200 300
x = cat(1, 100, 200, 300); % 3 x 1
100
200
300
x = cat(3, 100, 200, 300) % 1 x 1 x 3
x(:,:,1) =
100
x(:,:,2) =
200
x(:,:,3) =
300
回到原来的问题,你想在第一维(行)中连接,所以你可以简单地执行以下操作:
a = cell(4, 1);
a{1} = [1, 2, 3];
a{2} = [1, 4, 9];
a{3} = [1, 4, 9];
a{4} = [1; 5];
a = cat(1, [2, 7], a);
还要记住,这种使用concat
或方括号的形式可以应用于MATLAB中的大多数数据类型,包括struct
等。