行列の分散について

10 次查看(过去 30 天)
Taiki Murakawa
Taiki Murakawa 2018-10-1

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

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

ans = 1×3

   21.0000   54.3333   30.3333

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

采纳的回答

Hirokazu Tanaka
Hirokazu Tanaka 2018-10-1

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

请先登录,再进行评论。

更多回答(0 个)

Community Treasure Hunt

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

Start Hunting!