How to write matlab program for histogram with out using hist function.
    조회 수: 2 (최근 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!






