2017-11-15 5 views
2

私は人々が取る参照==~=、このように、そのエントリを取得するために行列を以下のカッコ内の異なる次元を持つマトリックス間><MATLABは別の次元で2つのマトリックスを比較

b = 

    1  4  7 
    2  5  8 
    3  6  9 

>> b == [1 2 3] 

ans = 

    3×3 logical array 

    1 0 0 
    0 0 0 
    0 0 0 

>> b == [1 4 7] 

ans = 

    3×3 logical array 

    1 1 1 
    0 0 0 
    0 0 0 

>> b == [1 4 5] 

ans = 

    3×3 logical array 

    1 1 0 
    0 0 0 
    0 0 0 

>> b == [1 5 4] 

ans = 

    3×3 logical array 

    1 0 0 
    0 1 0 
    0 0 0 

>> a 

a = 

    1  2  3  4  5  6  7  8  9 10 
    1  2  3  4  5  6  7  8  9 10 
    1  2  3  4  5  6  7  8  9 10 

>> a(:, b == [1 4 5]) 

ans = 

    1  4 
    1  4 
    1  4 

>> a(:, b == [1 5 4]) 

ans = 

    1  5 
    1  5 
    1  5 

>> b 

b = 

    1  4  7 
    2  5  8 
    3  6  9 

>> b > [1 3 2] 

ans = 

    3×3 logical array 

    0 1 1 
    1 1 1 
    1 1 1 

をしかし、Iなぜこれらがうまくいくのか分かりません。この使用法についての説明はありますか?

+1

[暗黙的膨張(https://www.mathworks.com/help/matlab/ref/bsxfun.html) – rahnema1

+0

より詳細な説明:これには次のようになります。 https://blogs.mathworks.com/loren/2016/10/24/matlab-arithmetic-expands-in-r2016b/ – Adiel

+0

R2016b以降、論理的で非常に便利なM言語への追加。 IMHOしかし、それは含まれていてはならない。私はこの話題についてすでに多くのことが議論されていることを知っていますので、ここでそれらの議論をやり直しましょう。しかし、他の線形代数の表記法との非互換性は、あなたが指摘したように、 –

答えて

1

R2016b以来、MATLABはimplicit expansionを使用しています。この問題を解決するためには、MATLABを使用する必要があります。これは、入力のシングルトン寸法(サイズ1の寸法)が他の入力と同じサイズに繰り返されることを意味します。例えば

b = [1 4 7 
    2 5 8 
    3 6 9] 

%% Singleton dimension as rows 
b == [x y z] 
% is equivalent to 
b == repmat([x y z], size(b,1), 1) 
% is equivalent to 
b == [x y z 
     x y z 
     x y z] 

%% Singleton dimension as columns 
b == [x; y; z] 
% is equivalent to 
b == repmat([x; y; z], 1, size(b,2)) 
% is equivalent to 
b == [x x x 
     y y y 
     z z z] 

はあなたの例のすべて3がダウンあなたの比較の行ベクトルを繰り返し、bの各行に比べ、ケース「行としてシングルトン次元」です。出力が期待どおりであることを簡単に確認できます。


暗黙的な拡張は、bsxfunを使用して(プレR2016b含む)MATLABのすべてのバージョンで使用することができます。暗黙の、または算術、expantion約

% Since 2016b 
b == [1 2 3]; 
% All versions (@eq is the '==' equals function) 
bsxfun(@eq, b, [1 2 3]) 
関連する問題