【问题标题】:Indexing 3d matrix with 2d Matrix plus vector用 2d 矩阵加向量索引 3d 矩阵
【发布时间】:2017-06-16 09:08:57
【问题描述】:

我有一个称为 M 的 m * n * k 矩阵,我想索引它以获得一些数据的平均值。

我有一个名为 EZG 的逻辑 m * n 矩阵,并希望将其应用于从 1:(end-1) 开始的第 k 个维度(称为此向量 V)。

没有这样的循环就可以编写它:

M=rand(3,3,3)
EZG=logical([1,1,1;0,1,0;0,0,1])
V=1:size(M,3)-1

mean(mean(M(EZG,V)1),2)

结果应该是长度为 V 的一维向量。 谢谢

【问题讨论】:

  • 我不明白你想要什么。你能举个数字的例子吗?
  • 我确实添加了一个示例。
  • 不,你没有。我的意思是用特定值指定输入和输出。顺便说一句,我投了反对票,因为在我看来,这使得问题质量低下(因为我无法准确理解被问到的内容)。如果您编辑,我会很乐意删除我的反对票

标签: matlab indexing 3d


【解决方案1】:

我想这就是你想要的:

M=rand(3,3,3);
EZG=logical([1,1,1;0,1,0;0,0,1]);
% repeat EZG K-1 times, and add zeros to the Kth slice
V=cat(3,repmat(EZG,1,1,size(M,3)-1),false(size(M,1),size(M,2)));
% logical index and mean
m=mean(M(V));

【讨论】: