このようなhist関数を使用する場合:
[h x] = hist(data, 1000)
データが1より長い限り、問題なく動作しますlength(data) > 1
。
しかし、そうであれば= 1
、これを行います:
データが-500から500に広がる場合。これを停止する方法はありますか?
使用している関数の形式(hist(data,1000)
)は、1000個のビンが生成されることを意味し、MATLABは、データの範囲に関する情報がないため(単一の値にはないため、デフォルトで幅1のサイズになります)。意味のある範囲)。ドキュメントからの宣伝文は次のとおりです。
n = hist(Y、nbins)ここで、nbinsはスカラーであり、nbinsの数のビンを使用します。
それを「より良く」することができるいくつかのオプションがあります(引用符で、あなた以外の誰もあなたが望むものを知らないので):
1)別の形式の関数を使用して、ビンを配置する場所を指定できます。
n = hist(Y、x)ここで、xはベクトルであり、xで指定された中心を持つlength(x)ビン間のYの分布を返します。たとえば、xが5要素のベクトルである場合、histはYの要素をxの要素のx軸を中心とする5つのビンに分散しますが、いずれも複雑になることはありません。注:中心ではなくビンのエッジを指定する方が自然な場合は、histcを使用してください。
2)最小値よりも小さい場合は、ビンの数をデータベクトル内の要素の数に制限できます。
hist(data, min(1000, numel(data)))
3)特殊なケース(N = 1など)を確認できます-これは望ましくないとおっしゃっていますが、スクリプト/関数を使用することはまったく難しいことではないため、これが受け入れられない理由を明確にする必要があるかもしれません。
4)プロット後にx軸を適切にスケーリングできます(@Paragの回答と同様)