【问题标题】:Merge two matrix and find the maximum of its attributes合并两个矩阵并找到其属性的最大值
【发布时间】:2015-05-26 18:30:00
【问题描述】:

我有两个矩阵 a 和 b,我想组合这些行,在第一行中我没有重复值,在第二个值中,a 和 @ 中的列具有相同行值的 987654326@ 在新矩阵中获得最大值。即

a = 1     2     3
    8     2     5 

b = 1     2     5     7
    2     4     6     1 

期望的输出

c =  1     2     3     5     7
     8     4     5     6     1

欢迎任何帮助。(the case for accumulation is asked here)

【问题讨论】:

  • 不,不是,在上一个问题中,这个问题中的值是最大值。所以它很接近但不完全相同
  • 我认为这表明缺乏研究。
  • 你是对的,在 matlab 中做第一个项目需要大量的努力和研究,但我认为你在这个论坛中提出的优雅而通用的答案比 matlab 帮助页面丰富得多(例如'horzcat'使用在“santhan”的答案中添加到这个答案中)。这些功能让我勇敢地提出问题并了解专家的意见。同时,我尝试提出更好的问题。感谢您花时间..

标签: matlab matrix max cell-array


【解决方案1】:

Accumarray 接受匿名函数和内置函数。它默认使用sum 函数。但是您可以将其更改为任何内置或匿名函数,如下所示:

在这种情况下,您可以使用max 函数。

in = horzcat(a,b).';
[uVal,~,idx] = unique(in(:,1));

out = [uVal,accumarray(idx,in(:,2),[],@max)].'

【讨论】:

  • 一如既往的完美,非常感谢 Santhan :)
【解决方案2】:

根据您之前的问题并查看 accumarray 的帮助文件,其中有这个确切的示例。

[ii, ~, kk] = unique([a(1,:) b(1,:)]);
result = [ ii; accumarray(kk(:), [a(2,:) b(2,:)], [], @max).'];

唯一的区别是匿名函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-09
    • 2014-08-16
    • 2019-09-23
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 2021-11-25
    相关资源
    最近更新 更多