【问题标题】:How to extract diagonal slices from a 3D array in matlab如何从matlab中的3D数组中提取对角线切片
【发布时间】:2022-01-07 18:51:30
【问题描述】:

我的问题可能是微不足道的。我在 MatLab 中有一个大型 3D 矩阵(m x n x k 元素),并且想要提取所有对角线切片并将它们存储在另一个 3D 数组中。为了更好地表示,我附上了一张图片。虚线是我正在寻找的对角线切片。

【问题讨论】:

  • (row, column, page)是matlab中的索引

标签: matlab multidimensional-array


【解决方案1】:

给定一个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 的范围从1min(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,[])});

【讨论】:

  • 亲爱的@rahnema1,有这个定义和索引,[m,n,k]=size(a),我在应用你的解决方案时出错了。
猜你喜欢
  • 2015-10-15
  • 2023-01-13
  • 1970-01-01
  • 2015-11-22
  • 2017-04-10
  • 2012-06-05
  • 1970-01-01
  • 2019-07-11
  • 1970-01-01
相关资源
最近更新 更多