繁体   English   中英

MATLAB中的独特功能?

[英]Unique function in MATLAB?

我使用唯一的(MATLAB函数)来查找矩阵的唯一行。

在函数中构造的矩阵,此后我使用唯一。 但是答案不正确。

唯一的只是更改矩阵行。 通过在MATLAB中使用long格式,行是相等的。

我真的不知道是什么问题? 我错了吗?

感谢您的帮助。


编辑从对答案的评论:

实际上,我的矩阵是四边形的顶点,有时是一条线。 例如:

A=[0.3 0.4;0.3,0.4;0.4,0.3;0.4,0.3] 

并通过独特

A=[0.4,0.3;0.4,0.3;0.3,0.4,0.3,0.4] 

但我需要

A=[0.4,0.3;0.3,0.4]

按照您的示例,我完全可以得到您的期望。

clear
A=[0.3 0.4;0.3,0.4;0.4,0.3;0.4,0.3];
A = unique(A,'rows')

A =

    0.3000    0.4000
    0.4000    0.3000

您可能错误地调用了“ unique ,或者这些行不是完全重复的。

要检查后者,请尝试计算两个“相等”行之间的差,然后查看它是否返回零。

这可能是浮点问题吗? 如果两个数字非常接近,则在显示它们时(无论是否使用format long )它们看起来可能相等,即使它们实际上并不相等。 例如

>> X = [1, 1e-20, 1e-20; 1, 1e-20, 1e-21];
>> format long;
>> X
ans =
   1.000000000000000   0.000000000000000   0.000000000000000
   1.000000000000000   0.000000000000000   0.000000000000000

所以行看起来相等。 但是,当您这样做时

>> unique(X, 'rows')
ans =
   1.000000000000000   0.000000000000000   0.000000000000000
   1.000000000000000   0.000000000000000   0.000000000000000

您会看到它们不相等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM