无循环矩阵运算 MATLAB
Matrix operations without loop MATLAB
我有矩阵 A(na*7)
和矩阵 B(nb*7)
。 (例如 A(16*7)
和矩阵 B(110*7)
)
A 和 B 都有 1 和 0 作为上下文。
我想在A的每一行和B的每一行之间进行异或运算,并统计结果中1的个数,并将其存储到另一个大小为na*nb
的矩阵C中。
我知道如何使用 for 循环来做到这一点,但我想知道是否有任何优雅的方法可以不用 for 循环来节省速度。
例如
如果 A
的大小是 3*2
并且 B
的大小是 4*2
我想执行这些操作:
sum(xor(A(1,:),B(1,:)))
sum(xor(A(2,:),B(1,:)))
sum(xor(A(3,:),B(1,:)))
l--------------l
sum(xor(A(1,:),B(2,:)))
sum(xor(A(2,:),B(2,:)))
sum(xor(A(3,:),B(2,:)))
l--------------l
sum(xor(A(1,:),B(3,:)))
sum(xor(A(2,:),B(3,:)))
sum(xor(A(3,:),B(3,:)))
l--------------l
sum(xor(A(1,:),B(4,:)))
sum(xor(A(2,:),B(4,:)))
sum(xor(A(3,:),B(4,:)))
然后我希望每个结果都存储在C中,每组3个结果是C的一行
非常感谢
我有矩阵 A(na*7)
和矩阵 B(nb*7)
。 (例如 A(16*7)
和矩阵 B(110*7)
)
A 和 B 都有 1 和 0 作为上下文。
我想在A的每一行和B的每一行之间进行异或运算,并统计结果中1的个数,并将其存储到另一个大小为na*nb
的矩阵C中。
我知道如何使用 for 循环来做到这一点,但我想知道是否有任何优雅的方法可以不用 for 循环来节省速度。
例如
如果 A
的大小是 3*2
并且 B
的大小是 4*2
我想执行这些操作:
sum(xor(A(1,:),B(1,:)))
sum(xor(A(2,:),B(1,:)))
sum(xor(A(3,:),B(1,:)))
l--------------l
sum(xor(A(1,:),B(2,:)))
sum(xor(A(2,:),B(2,:)))
sum(xor(A(3,:),B(2,:)))
l--------------l
sum(xor(A(1,:),B(3,:)))
sum(xor(A(2,:),B(3,:)))
sum(xor(A(3,:),B(3,:)))
l--------------l
sum(xor(A(1,:),B(4,:)))
sum(xor(A(2,:),B(4,:)))
sum(xor(A(3,:),B(4,:)))
然后我希望每个结果都存储在C中,每组3个结果是C的一行
非常感谢