Matlab 使用bsxfun计算匹配值二矩阵
我使用Matlab 使用bsxfun计算匹配值二矩阵,matlab,matrix,bsxfun,Matlab,Matrix,Bsxfun,我使用c=bsxfun(@eq,b,a)来比较两个矩阵的值。但我发现很难计算不匹配的值。例如,我使用这个代码 a = [1 2 3 4 7 6; ... 3 2 4 6 7 2 ]; b = [1 3 2 4 5 7; ... 3 4 5 6 7 2; ... 2 3 4 5 6 6]; for i = 1:size(a,1) c= bsxfun(@eq,a(i,:),b) match = sum(c') end 和结果 c = 1
c=bsxfun(@eq,b,a)
来比较两个矩阵的值。但我发现很难计算不匹配的值。例如,我使用这个代码
a = [1 2 3 4 7 6; ...
3 2 4 6 7 2 ];
b = [1 3 2 4 5 7; ...
3 4 5 6 7 2; ...
2 3 4 5 6 6];
for i = 1:size(a,1)
c= bsxfun(@eq,a(i,:),b)
match = sum(c')
end
和结果
c =
1 0 0 1 0 0
0 0 0 0 1 0
0 0 0 0 0 1
match =
2 1 1
c =
0 0 0 0 0 0
1 0 0 1 1 1
0 0 1 0 0 0
match =
0 4 1
我想用第一个匹配矩阵和第二个匹配矩阵保存值。比如说
total_match =
2 5 2
你有什么建议吗?谢谢..不需要循环
match = bsxfun( @eq, permute( a, [1 3 2]), permute( b, [3 1 2] ) ); % result in 2x3x6 boolean
match = sum( match, 3 ); % sum matches across rows of a--b
total_match = sum( match, 1 );
PS如果这个答案对你有用的话,请考虑它。但是如果我想要一个是MXN矩阵,而B是PXN Matr.@ USS220944-你厌倦了你的例子中的代码吗?应适用于任何
m
和p
,只要列数相同。