【问题标题】:slicing multidimensional array in Matlab在 Matlab 中对多维数组进行切片
【发布时间】:2015-10-15 06:08:15
【问题描述】:

我想知道为什么在 Matlab 中:

x = randn(100,100,3,30);
r = x(:,:,1,:);
q = y(:,:,:,1);

q 是一个 100x100x3 双精度数组,而 r 是一个 4-D 双精度数组。 有什么提示吗?

【问题讨论】:

  • 我已经发现我可以置换数组,这解决了问题。对我来说这仍然是一个意外的行为。

标签: matlab multidimensional-array slice


【解决方案1】:

其实r 也是一个 3D 数组,但是 4D 数组中的第 3 维只包含 1 个元素,所以它是一个可以使用 squeeze 删除的单维。 Matlab 不会自动删除它,因为它不是“最后一个”维度,与 q 相比。

换句话说,

size(r) = 100 100 1 30

size(q) = 100 100 3 1

自动变成100 100 3

调用size(squeeze(r))size(squeeze(q)) 在这两种情况下都会产生一个3D 数组。

这样清楚一点吗?

【讨论】:

    猜你喜欢
    • 2013-06-21
    • 2016-02-20
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    相关资源
    最近更新 更多