【问题标题】:count match value two matrix using bsxfun使用 bsxfun 计算匹配值两个矩阵
【发布时间】:2013-03-24 06:04:47
【问题描述】:

我使用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

你有什么建议吗?谢谢..

【问题讨论】:

    标签: matlab matrix bsxfun


    【解决方案1】:

    不需要循环

    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
    It is best not to use i and j as variable names in Matlab.

    【讨论】:

    • @user2203941 - 如果这个答案适合你,请考虑accepting它。
    • 但是如果我想要 a 是 mxn 矩阵而 b 是 pxn 矩阵呢?
    • @user2203941 - 您是否厌倦了示例中的代码?应该适用于任何mp,只要列数相同。
    猜你喜欢
    • 1970-01-01
    • 2014-02-01
    • 2023-03-30
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2020-07-09
    • 2018-06-01
    • 1970-01-01
    相关资源
    最近更新 更多