如何在MATLAB中通过模板化2D阵列的列来创建3D阵列



假设我有一个名为a的2D数组。我想创建一个名称为B的3D数组,其"页面"是在a上逐列移动的模具的选择列。例如,B的第一页可能是A的第1列、第3列和第5列。然后第二页将是A等的第2列、第4列和第6列。

有没有人有一种有效的方法可以做到这一点,那就是MATLAB?

谢谢!

我猜你正在寻找这个-

%%// Given 2D array
A = randi(10,4,12)
t1 = reshape(A,size(A,1)*2,[]);
t2 = reshape(t1',size(A,2)/2,[],2); %%//'
B = permute(t2,[2 1 3]) %%// Output 3D array

输出-

A =
     5    10     3     5     6     8     4     3     8    10     8     7
    10     8     3     7     6    10     9     2     7     8     8     5
    10     4     7     8     6     4     5     4     1     1     3     7
     7     7     6     6     1    10     5     8     9     4     3     3

B(:,:,1) =
     5     3     6     4     8     8
    10     3     6     9     7     8
    10     7     6     5     1     3
     7     6     1     5     9     3

B(:,:,2) =
    10     5     8     3    10     7
     8     7    10     2     8     5
     4     8     4     4     1     7
     7     6    10     8     4     3

当然,对于这种特殊情况,还有一种直接的替代方法——

B(:,:,1)=A(:,1:2:end);
B(:,:,2)=A(:,2:2:end);

相关内容

  • 没有找到相关文章

最新更新