1

12x202 のマトリックス (202 の機能を持つ 12 のインスタンス) があります。各 12 インスタンス間のマハラノビス距離を計算したいのですが、列の数はインスタンス (行) の数よりも大きくすることはできないようです。(12x11 行列の距離を計算するのに問題はありませんでしたが、11 個を超えるフィーチャがあると、linkage(X,'ward','mahalanobis');またはmahal(X,X);またはを使用して MATLAB でエラーが発生しますpdist2(X,X,'mahalanobis');)


もう少し簡単な解決策を次に示します。

Javascript コントローラー

$scope.carouselNext = function() {
  $('#carousel-main').carousel('next');
}
$scope.carouselPrev = function() {
  $('#carousel-main').carousel('prev');
}

HTML ビュー

<div id="carousel-main" class="carousel slide" data-ride="carousel">
  <!-- Indicators -->
  <ol class="carousel-indicators">
    <li data-target="#carousel-main" data-slide-to="0" class="active"></li>
    <li data-target="#carousel-main" data-slide-to="1"></li>
    <!-- add indicators for any slides added -->
  </ol>

  <!-- Wrapper for slides -->
  <div class="carousel-inner" role="listbox">

    <div id="slide1" class="item active" ng-swipe-right="carouselPrev()" ng-swipe-left="carouselNext()">
      <!-- img or content here -->
    </div>

    <div id="slide2" class="item" ng-swipe-right="carouselPrev()" ng-swipe-left="carouselNext()">
      <!-- img or content here -->
    </div>

    <!-- add more slides as needed -->

  </div>
</div>
4

1 に答える 1

0

mahal 関数のmatlab ドキュメントを見ると、次のように書かれています。

X と Y は同じ数の列を持つ必要がありますが、異なる数の行を持つことができます。X は、列よりも多くの行を持たなければなりません。

私は統計が苦手なので、なぜこの条件が重要なのかはわかりませんが、効率的な理由と、12 のメジャーでは数が少なすぎるため、より多くのメジャーを使用することを検討してください。

あなたができることは、マハラボニス距離を自分で計算することです。同じドキュメントで式を取得するのは簡単です。また、マハラバノア距離のより良い計算がある例を示します。

マハラノビス距離は二次距離とも呼ばれます。これは、オブジェクトの 2 つのグループの分離を測定します。平均 と を持つ 2 つのグループがあるとします。マハラノビス距離は次の式で与えられます。

同じグループではなく、別のグループでも同様です。

いずれにせよ、これを使用できます:

function MD = my_MahalanobisDistance(X, Y)

[nX, mX] = size(X);
[nY, mY] = size(Y);

n = nX + nY;

if(mX ~= mY)
    disp('Columns in X must be same as in Y')
else
    xDiff = mean(X) - mean(Y);
    cX = my_covariance(X);
    cY = my_covariance(Y);
    pC = nX/n*cX + nY/n*cY;          
    MD = sqrt(xDiff * inv(pC) * xDiff');
end

そして共分散について:

function C = my_covariance(X) 
[n,m] = size(X); 
Xc = X -repmat(mean(X),n,1); 
C = Xc'* Xc/n;

これがお役に立てば幸いです

于 2016-08-25T08:17:58.880 に答える