0

行列の一意の行を見つけるために、unique (MATLAB function ) を使用しました。

関数で構築された行列で、その後uniqueを使用します。しかし、答えは正しくありません。

一意の行列の行を変更するだけです。MATLAB の long 形式では、行は等しくなります。

私は本当に何が問題なのかわからないのですか?私が間違っている?

あなたの助けに感謝します。


EDIT回答のコメントから:

実際、私の行列は四角形の頂点であり、時には線です。例えば:

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

0

これは浮動小数点の問題でしょうか? 2 つの数値が非常に近い場合、それらを ( を使用して、または使用せずに) 表示すると、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 に答える