我在MATLAB中有一个2d矩阵arr
,大小为10x10
。如果我需要增加它来说20x20
我是否需要创建一个大小为20x20的新数组并复制将arr
的所有内容放入其中。或者有一些方法可以扩展arr的大小并使其成为20x20
而无需复制新数组中的所有元素吗?
答案 0 :(得分:4)
您可以执行以下操作:
>> arr = ones(10); % your input matrix
>> arr(20,20) = 0;
>> size(arr)
ans =
20 20
尺寸较小的示例:
>> arr = ones(3);
>> arr(5,5) = 0
arr =
1 1 1 0 0
1 1 1 0 0
1 1 1 0 0
0 0 0 0 0
0 0 0 0 0
答案 1 :(得分:0)
如果预分配的空间太小,Matlab会自动增加数组大小。然而,这是低效的,因此您应该创建一个新的更大的数组并复制内容。
smallArray = zeros(10,10, 'int32') %creates a 10x10 int array
largerArray = zeros(20,20,'int32') %creates larger array
largerArray(1:10,1:10) = smallArray; %copies the 10x10 array to the upper left of the large array