[英]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.