我有一个大的4维矩阵,我希望1)找到这些维度中最小的2个(即4000x4000结果),然后2)计算最后两个维度中小于的元素数量(让我们说)最小值的5倍(即给出4000x4000的结果)。我有点难过如何做到这一点而不回复for循环
某些代码可能有助于我的描述:
A = rand([4000,4000,7,7]);
B(:,:) = min(A(:,:,1:7;1:7)); % this isn't quite right?
C = size( A < 5*B ) % obviously totally wrong
任何指针都会很棒 - 非常感谢!
答案 0 :(得分:2)
如果我理解这一点,以下应该做的工作:
mn = min(min(A,[],3),[],4);
num = sum(sum(bsxfun(@lt, A, 5*mn),3),4)
答案 1 :(得分:-1)
首先,它应该是rand([4000,4000,7,7])
其次,要使用min,你必须做min(A, [], 1)
之类的事情(用维度替换1)
第三,假设您有A
和B
,则需要C = sum(sum(A < 5*B))