假设我有一些带有非负条目的矩阵,例如N个相等大小的矩阵MxM。例如,我有3个矩阵,如下所示:
A1=[2, 2, 0;
2, 2, 0;
0, 2, 0];
A2=[4, 0, 4;
4, 3, 0;
0, 0, 1];
A3=[2, 0, 0;
1, 0, 3;
3, 4, 3];
我想在matlab中找到A1,A2和A3的交集。这意味着我想获得以下矩阵:
B=[-1, 2, 4;
-1, -1, 3;
3, -1, -1];
如果N个矩阵的(i,j)元素(即元素A1(i,j),A2(i,j),A3(i,j))的交集最多为一个非零数,则B( i,j)等于那个数字。否则,如果交集至少为两个数字,我将输出-1,如上例所示。
我该如何在Matlab中做到无循环?
首先,连接到单个3D矩阵:
A=cat(3,A1,A2,A3)
然后计算非零元素,它给出-1
-Elements的位置:
L=(sum(A~=0,3)>1)
最后,在L = 1的情况下,我们希望为-1,否则,我们希望在该位置处的单个元素为总和,因为其他元素均为零:
L*-1+(1-L).*sum(A,3)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句