MATLAB中二维阵列尺寸的扩展

MATLAB中二维阵列尺寸的扩展,matlab,Matlab,我在MATLAB中有一个2d矩阵arr,大小为10x10。如果我需要将其增加为20x20,我是否需要创建一个大小为20x20的新数组,并将arr的所有内容复制到该数组中。或者是否有某种方法可以将arr的大小扩展为20x20新数组中的元素?您可以执行以下操作: >> arr = ones(10); % your input matrix >> arr(20,20) = 0; >> size(arr) ans = 20 20 小尺寸示例: >>

我在MATLAB中有一个2d矩阵
arr
,大小为
10x10
。如果我需要将其增加为
20x20
,我是否需要创建一个大小为20x20的新数组,并将
arr
的所有内容复制到该数组中。或者是否有某种方法可以将arr的大小扩展为
20x20
新数组中的元素?

您可以执行以下操作:

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

您可以执行以下操作:

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

如果预分配的空间太小,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

如果预分配的空间太小,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

请注意,不应在循环中扩展数组的大小,因为这样做需要时间,最好的选择始终是首先初始化数组,使其达到最大大小(如果可能)。请注意,不应在循环中扩展数组的大小,因为这样做需要时间,最好的选择总是首先初始化你的数组,使其达到最大大小,如果可能的话。看起来很明显,但根本没有考虑过。尼斯看起来很明显,但根本没有考虑过。尼斯如何创建一个新数组并复制值比调整旧数组的大小更有效?问题是,如果你有一个10行矩阵。然后假设您想使用for循环再添加10行。然后对每个循环调整矩阵的大小,首先是11行,然后是12行,以此类推。。。。因此,最好先将其调整为20行,然后添加新行。对不起,我没有说得很清楚。如何创建新数组并复制值比调整旧数组的大小更有效?问题是,如果您有一个10行矩阵。然后假设您想使用for循环再添加10行。然后对每个循环调整矩阵的大小,首先是11行,然后是12行,以此类推。。。。因此,最好先将其调整为20行,然后添加新行。对不起,我没说清楚。