【问题标题】:reshape a 1x4x1001 matrix to a 2x2x1001将 1x4x1001 矩阵重塑为 2x2x1001
【发布时间】:2013-06-09 19:41:50
【问题描述】:

嗨,
与 MatLab 合作,我正在尝试将 1x4x1001 矩阵重塑为 2x2x1001
我已经尝试使用reshape,但没有成功。

谁能帮帮我?

谢谢

【问题讨论】:

  • reshape 应该可以工作。你尝试了什么?
  • reshape(h,2,2,:)' 我得到这个错误???错误使用 ==> reshape 要 RESHAPE 元素的数量不能改变。
  • 仔细查看mathworks.co.uk/help/matlab/ref/reshape.html 以了解维度占位符的语法...
  • reshape(h,2,2,1001) 也许? :D

标签: matlab matrix reshape


【解决方案1】:

reshape(A,2,2,1001)reshape(A,2,2,size(A,3)) 应该可以解决问题。无论哪种方式,您都必须确保您尝试重塑的形状为每个元素以及原始对象的每个元素都有空间。请注意,您可以将其中一个维度留空,让reshape 自行解决,例如 reshape(A,2,2,[])

我在 Octave 和 MATLAB 上对此进行了测试,它似乎可以正常工作,但您可能需要做一些调整才能让元素按照您想要的顺序重塑。

编辑:根据@woodchips 评论修正了我的回答中的一点。

【讨论】:

  • 如果我用冒号代替最后一个维度,这对我也不起作用。 size(A,3) 的解决方案允许 A 有不同数量的切片,如果大小不总是固定的,我会建议这样做。
  • 它现在与 reshape(A,2,2,1001) 一起工作,非常感谢队友 ;)
  • @Engineero:我认为你也需要重新阅读documentation ;)
  • 很好,您可以使用reshape(A,2,2,[]) 来做同样的事情。它会自动将[] 替换为使新数组中的元素数与原始数组中的元素数相同的任何数字。谢谢@OliCharlesworth。
  • reshape(A,2,2,:) 不是有效的 matlab 语法,并不是说它不明确。 reshape(A,2,2,[]) 是有效的语法,并且会成功。将最后一个维度留空的好处是 MATLAB 可以为您找出需要的内容。
猜你喜欢
  • 2011-01-16
  • 1970-01-01
  • 2013-05-17
  • 2023-01-25
  • 1970-01-01
  • 2021-10-05
  • 2016-11-08
  • 1970-01-01
  • 2014-09-22
相关资源
最近更新 更多