【发布时间】:2022-01-07 18:51:30
【问题描述】:
我的问题可能是微不足道的。我在 MatLab 中有一个大型 3D 矩阵(m x n x k 元素),并且想要提取所有对角线切片并将它们存储在另一个 3D 数组中。为了更好地表示,我附上了一张图片。虚线是我正在寻找的对角线切片。
【问题讨论】:
-
(row, column, page)是matlab中的索引
标签: matlab multidimensional-array
我的问题可能是微不足道的。我在 MatLab 中有一个大型 3D 矩阵(m x n x k 元素),并且想要提取所有对角线切片并将它们存储在另一个 3D 数组中。为了更好地表示,我附上了一张图片。虚线是我正在寻找的对角线切片。
【问题讨论】:
标签: matlab multidimensional-array
给定一个m x n x k 数组a 使用以下方法将切片提取到一个元胞数组中:
idx = repmat(reshape((0 : k - 1), 1, 1,[])+(1 : n), [m, 1, 1]);
result = accumarray(idx(:), a(:), [], @(x){reshape(x, m, 1,[])});
切片的尺寸为[m x 1 x y],其中y 的范围从1 到min(n,k)。
对于旧 MATLAB 版本,请使用以下内容(bsxfun 而不是隐式扩展):
idx = repmat(bsxfun(@plus, reshape((0 : k - 1), 1, 1,[]), (1 : n)), [m, 1, 1]);
result = accumarray(idx(:), a(:), [], @(x){reshape(x, m, 1,[])});
【讨论】:
[m,n,k]=size(a),我在应用你的解决方案时出错了。