【问题标题】:Expanding the size of 2d array in MATLAB在 MATLAB 中扩展二维数组的大小
【发布时间】:2015-07-07 08:04:11
【问题描述】:

我在 MATLAB 中有一个二维矩阵 arr,其大小为 10x10。如果我需要将其增加为 20x20,我是否需要创建一个大小为 20x20 的新数组并复制 @987654324 的所有内容@ 进入它。或者有什么方法可以扩展 arr 的大小并将其变为 20x20 而不必复制新数组中的所有元素?

【问题讨论】:

  • 请注意,您不应该在循环中扩展数组的大小,因为这样做需要时间,最好的选择始终是首先将数组初始化到它将达到的最大大小如果可能的话

标签: matlab


【解决方案1】:

您可以执行以下操作:

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

【讨论】:

  • 看起来很明显,却没想到,不错
【解决方案2】:

如果预分配的空间太小,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 行,然后添加新行。抱歉,表达的不是很清楚。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多