4

私はmatlabの初心者であり、すでにさまざまなサイトを検索していますが、解決策は見つかりませんでした(少なくとも理解できるもの)。

0.1から4.7の範囲のdouble値を持つ行列290x233があります。0.5から0.5の範囲のバーがあるように、このマトリックス内のすべてのデータからヒストグラムを生成したい-> 0から0.5、0.5から1などの範囲内にいくつの値があるかを確認できるようにしたいの上 ...

これまでのところ、私はバーをプロットするようなものを得ることができました。このコードの使用:

bins=[0.25:0.5:4.75];
n2=histc(a_dif_1, bins);
bar(bins,n2,'hist');

各ビン内にたくさんのピークがあるという結果を得ることができました(下の画像を参照)。これは、bin範囲内の各単一値の出現を示していることを意味します。

ここに画像の説明を入力してください

それから私は「スタック」オプションについて知り、

bins=[0.25:0.5:4.75];
n2=histc(a_dif_1, bins);
bar(bins,n2,0.8,'stacked','b');

このようにして、少なくとも1つのビン内の発生の総数を示す大きなバーが得られました(したがって、以下に示す10個の長方形のバー)。

ここに画像の説明を入力してください

今、これがビン内の値の合計量を表示するだけのバーを描画する正しい方法であるかどうか疑問に思っていますか?これとは別に、私は自分のバーがビンの中央から外れていることに気づきました(右側のバーは2つのXティックの真ん中に正確にはありません)-私はビンで何かを台無しにしましたか?

ちょっとしたおまけとして、ついに棒の上に曲線を描きたいと思います。曲線は、非常に一般化された方法で前に説明したピークに沿って表示されるはずです。これにより、バー以外のデータの分布に関するより詳細な情報を提供できます。

あらゆる種類の助けやアイデアをありがとう!

アップデート

ヒントをありがとうございました。に変更しhistcましたhist

bins=[0.25:0.5:4.75]; 
hist(a_dif_1(:), bins)

...そしてMatlabは私が望んでいたものを正確に提供してくれます:

ここに画像の説明を入力してください

4

1 に答える 1

0
a = 0.1;
b = 4.7;
r = a + (b-a).*rand(290,233);
bins=[0.25:0.5:4.75];
hist(r(:))
hist(r(:),bins)

大丈夫ですか?

ここに画像の説明を入力してください

于 2012-11-09T14:19:21.197 に答える