Creating histogram without using built in function

40 ビュー (過去 30 日間)
David Fariyike
David Fariyike 2022 年 1 月 28 日
編集済み: Voss 2022 年 1 月 29 日
I am trying to create a code that mimics the hist() function but I am running into an issue on the final bin.
Here is what I have:
Pie=sin(2*pi*tt); %array of data p=sin(2*pi*t/T)
L=10; %number of bins
minPie = min(Pie); %min value of array
maxPie = max(Pie); %max value of array
binwidth = (maxPie - minPie)/L; %width of bin
binnum = 1+floor((Pie - minPie) / binwidth); %value of array to a bin
bincounts = accumarray(binnum(:), 1); %amount to each bin
X = minPie + (0:L) * binwidth; %X of histogram
figure (1)
bar(X, bincounts) %my histogram
figure (2)
hist(Pie,10) %matlab histogram
My code returns this figure which has 11 bins at a bin width of 0.2.
Matlab's hist function returns this figure which has 10 bins with a bin width of 0.2.
How can I change my last bin so that the two figures are identical?
  1 件のコメント
David Fariyike
David Fariyike 2022 年 1 月 28 日
tt on the sin function is just equal spaced intervals (linspace) from an initial to a final time.

サインインしてコメントする。

採用された回答

Voss
Voss 2022 年 1 月 28 日
編集済み: Voss 2022 年 1 月 29 日
You're going to run into edge effects like that, due to the nature of floating-point arithmetic. You can just fix values out of bounds after calculating them.
tt = linspace(0,10,100);
Pie=sin(2*pi*tt); %array of data p=sin(2*pi*t/T)
L=10; %number of bins
minPie = min(Pie); %min value of array
maxPie = max(Pie); %max value of array
binwidth = (maxPie - minPie)/L; %width of bin
binnum = 1+floor((Pie - minPie) / binwidth); %value of array to a bin
binnum(binnum < 1) = 1; % correct the edge effects
binnum(binnum > L) = L;
% bincounts = accumarray(binnum(:), 1); %amount to each bin
bincounts = zeros(1,L);
for ii = 1:L
bincounts(ii) = nnz(binnum == ii);
end
% use the bin centers for plotting:
X = minPie + (0.5:L-0.5) * binwidth; %X of histogram
figure (1)
bar(X, bincounts) %my histogram
figure (2)
hist(Pie,L) %matlab histogram

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeHistograms についてさらに検索

製品


リリース

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by