0

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

2 回答 2

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错了,要么行不是完全重复的。

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

于 2013-11-04T13:55:00.440 回答
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

你可以看到他们是不平等的。

于 2013-11-04T09:20:51.990 回答