我使用unique(MATLAB函数)来查找矩阵的唯一行。
在函数中构造的矩阵,之后我使用unique。但答案是不正确的。
unique只需更改矩阵行。通过MATLAB中的格式,行是相等的。
我真的不知道是什么问题?我错了吗?
我很感谢你的帮助。
编辑来自对答案的评论:
我的矩阵实际上是四边形的顶点,有时候是一条直线。例如:
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]
答案 0 :(得分:1)
按照你的例子,我得到了你所期望的。
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
,要么行不是完全重复的。
要检查后者,请尝试计算两个“相等”行之间的差异,看看它是否返回零。
答案 1 :(得分:0)
这可能是浮点问题吗?如果两个数字非常接近,那么当您显示它们时(使用或不使用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
你可以看到他们不平等。