行列の分散について

8 次查看(过去 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 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

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

Start Hunting!