我有一个尺寸为174x162x286的3D矩阵“ t”,代表经度x纬度x时间步长。但是,“ t”中缺少三个时间步。我需要在这些特定位置插入一个空白数组,以便最终产品的尺寸为174x162x289的“ t”。
t(:,:236)= NaN;
我不想移动整个数组。
答案 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