Effacer les filtres
Effacer les filtres

行列の分散について

7 vues (au cours des 30 derniers jours)
Taiki Murakawa
Taiki Murakawa le 1 Oct 2018

現在、画像の輝度値の分散を求めることを目標に勉強しており、分散値を求めるvar関数について知りました。 そこで、ドキュメンテーションで調べていたら、行列の分散で以下のようなプログラムが記載されていました。

A = [4 -7 3; 1 4 -2; 10 7 9]; var(A)

ans = 1×3

   21.0000   54.3333   30.3333

これはどのような計算手順で求め、先のような答えになったのか分からないです。 ちなみに、分散の定義については理解しており、行列での求め方に困っている状態です。 分かる方ご教示願います。

Réponse acceptée

Hirokazu Tanaka
Hirokazu Tanaka le 1 Oct 2018

var 関数や sum 関数もそうですが、行列に対して計算する場合には、基本的には縦方向、すなわち各列に対してそれぞれ計算します。

 A = [4 -7 3; 1 4 -2; 10 7 9];
 var(A)

と計算した場合には、[4,1,10] の分散、[-7,4,7] の分散、[3,-2,9] の分散がそれぞれ計算されています。

定義自体は https://jp.mathworks.com/help/matlab/ref/var.html の下部にあります。

  4 commentaires
Hirokazu Tanaka
Hirokazu Tanaka le 1 Oct 2018
Modifié(e) : Hirokazu Tanaka le 1 Oct 2018
最初の入力引数は single または double でなければなりません。
とのエラーメッセージを転記頂いている通り、A が single型あるいはdouble型の数値でないことが原因かと。恐らく、、整数型で読み込まれているのではと推測していますが、
whos A
と実行するとデータ型を確認できますので、一応確認してみてください。
もし double 型に変換して分散を計算するのであれば、
Ad = double(A);
var(Ad(:))
でいけるかと思います。
ふと検索してみたところ、Image Processing Toolbox は画像データのための関数があるようです。もし Image Processing Toolbox も使えるようでしたら見てみてください。
Taiki Murakawa
Taiki Murakawa le 2 Oct 2018
回答ありがとうございます。 無事に分散を求めることができました。 Image Processing Toolboxの方に関しては、もう少し検討させていただきます。
この回答を採用させていただきます。 本当にありがとうございました。

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!