How to write matlab program for histogram with out using hist function.
8 次查看(过去 30 天)
显示 更早的评论
Xw = abs(fft(Xt));
ki = hist(Xw,L)%%%L=bin lenth,Xw=1000 randam samples
0 个评论
回答(4 个)
Image Analyst
2015-9-10
Hint: use a for loop over all the elements in your array. Convert the value of the array into a bin number. Then increment the "counts" array at that bin number:
for k = 1 : length(Xw(:))
binNumber = ...... (you do this part)
counts(binNumber) = counts(binNumber) + 1;
end
bar(counts, 'FaceColor', 'b');
0 个评论
rodrigo figueiredo
2021-8-18
编辑:rodrigo figueiredo
2021-8-18
a[]=0;
for p =1 : ?? :length(Xt)
for k = 1 : floor(abs(fft(Xt)))
a= [a Xt]
end
end
nbins = 25;
h = histogram(a,nbins)
1 个评论
Walter Roberson
2021-8-18
That code is a highly inefficient way of replicating the original Xt signal many times, and then taking a histogram of the repeated signal -- which is going to have the same relative portions as the original signal would have.
However, the original poster wants to take a histogram of the fft output, rather than having the mean() of the signal determine how many copies of the original signal to make.
Walter Roberson
2021-8-18
N = 1000;
L = 50; %number of bins, not bin width!
Xt = randn(1,N) + atan(pi*rand(1,N));
Xw = abs(fft(Xt));
figure
hist(Xw,L);
minXw = min(Xw);
maxXw = max(Xw);
binwidth = (maxXw - minXw)/L;
binnum = 1 + floor((Xw - minXw) / binwidth);
bincounts = accumarray(binnum(:), 1);
X = minXw + (0:L) * binwidth;
figure
bar(X, bincounts)
bar has minor differences in the default bar width; it would not be difficult to adjust.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Distribution Plots 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!