如何在MATLAB中的多维数组中插入空白数组?

时间:2019-06-27 09:48:50

标签: arrays matlab multidimensional-array

我有一个尺寸为174x162x286的3D矩阵“ t”,代表经度x纬度x时间步长。但是,“ t”中缺少三个时间步。我需要在这些特定位置插入一个空白数组,以便最终产品的尺寸为174x162x289的“ t”。

t(:,:236)= NaN;

我不想移动整个数组。

1 个答案:

答案 0 :(得分:2)

您可以按以下步骤进行操作:

t = randi(9, 2, 4, 7); % example data
ind_insert = [3 5 6 6]; % insert immediately after these 3rd-dim positions 

[~, ind] = sort([1:size(t,3) ind_insert]); % exploits the fact that sorting is stable
t = cat(3, t, NaN(size(t,1), size(t,2), numel(ind_insert)));
t = t(:,:,ind);

示例:之前:

t(:,:,1) =
     3     7     4     7
     3     8     8     1
t(:,:,2) =
     6     9     5     5
     4     1     4     7
t(:,:,3) =
     3     5     2     5
     8     1     7     2
t(:,:,4) =
     4     2     3     3
     6     7     9     7
t(:,:,5) =
     2     1     7     4
     3     6     5     6
t(:,:,6) =
     6     6     2     3
     7     9     7     2
t(:,:,7) =
     6     5     7     6
     5     6     4     4

之后:

t(:,:,1) =
     3     7     4     7
     3     8     8     1
t(:,:,2) =
     6     9     5     5
     4     1     4     7
t(:,:,3) =
     3     5     2     5
     8     1     7     2
t(:,:,4) =
   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN
t(:,:,5) =
     4     2     3     3
     6     7     9     7
t(:,:,6) =
     2     1     7     4
     3     6     5     6
t(:,:,7) =
   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN
t(:,:,8) =
     6     6     2     3
     7     9     7     2
t(:,:,9) =
   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN
t(:,:,10) =
   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN
t(:,:,11) =
     6     5     7     6
     5     6     4     4