入力特徴ベクトル Y (1x14) からマトリックス X (18x14) のすべての特徴ベクトルまでのマハラノビス距離を計算したいと思います。X の 6 つのベクトルはそれぞれ 1 つのクラスを表します (つまり、3 つのクラスがあります)。次に、マハラノビス距離に基づいて、入力に最も近いベクトルを選択し、それを 3 つのクラスのいずれかに分類します。
私の問題は、次のコードを使用すると、値が 1 つしか得られないことです。入力YとXのすべてのベクトルの間のマハラノビス距離を取得するにはどうすればよいですか。したがって、最後に18個の値があり、最小のものを選択します。どんな助けでも大歓迎です。ありがとうございました。
注: マハラノビス距離は、点 P と分布 D の間の距離の尺度であることは知っていますが、これを私の状況にどのように適用できるかはわかりません。
Y = test1; % Y: 1x14 vector
S = cov(X); % X: 18x14 matrix
mu = mean(X,1);
d = ((Y-mu)/S)*(Y-mu)'
また、行列 X を 3 に分離しようとしました。したがって、それぞれが 1 つのクラスの特徴ベクトルを表します。これはコードですが、正しく機能せず、3 つの距離があり、いくつかは負の値です!
Y = test1;
X1 = Action1;
S1 = cov(X1);
mu1 = mean(X1,1);
d1 = ((Y-mu1)/S1)*(Y-mu1)'
X2 = Action2;
S2 = cov(X2);
mu2 = mean(X2,1);
d2 = ((Y-mu2)/S2)*(Y-mu2)'
X3= Action3;
S3 = cov(X3);
mu3 = mean(X3,1);
d3 = ((Y-mu3)/S3)*(Y-mu3)'
d= [d1,d2,d3];
MahalanobisDist= min(d)
最後に、mahal
Matlab が提供する関数を使用すると、次のエラーが発生しました。結果が不正確になる場合があります。