如何使用matlab在矩阵中查找唯一(非重复)值

Kel*_*Gan 5 matlab unique

大家.假设我有以下(3x3)矩阵A:

0 1 3
0 0 3
0 0 0
Run Code Online (Sandbox Code Playgroud)

我的问题是如何使用matlab找出该矩阵中的唯一值?在这种情况下,结果应该是1.我试过用了

value=unique(A)
Run Code Online (Sandbox Code Playgroud)

但是它返回了一个向量{0; 1; 3}并不是我想要的.

如果你们能帮我解决这个问题,我非常感谢.谢谢!

Moh*_*nia 4

这是一个简短的

value = A(sum(bsxfun(@eq, A(:), A(:).'))==1);
Run Code Online (Sandbox Code Playgroud)

它比较矩阵中的所有元素对,计算它们相等的次数,并返回只计算过一次的元素。

  • 这是一个很好的。我总是惊讶于我的旧代码被“bsxfun”简化了多少。MathWorks 应该更早地引入它。@* - 请注意,此解决方案中有一个大小为 `numel(A)*numel(A)` 的临时方阵,如果矩阵大小推动 100 多个元素的平方,则可能会令人望而却步。它是一个逻辑矩阵,这很有帮助,但了解这一点仍然是件好事……最近我发布了一个基于“bsxfun”的巧妙解决方案,当发现作者有一个大数据集时,该解决方案最终无法工作。当然,这个 3x3 的例子是没有问题的! (2认同)