MATLAB中的独特功能?

时间:2013-11-04 09:13:44

标签: matlab matrix

我使用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]

2 个答案:

答案 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

你可以看到他们不平等。