MATLAB: Histogram manipulating data help

histogram

Hi. I am trying to manipulate histogram data. Firstly I create a histogram and want to replace say the first 20 bins with a value of zero
%Histogram
maxval=max(IM(:));
[counts,x] = imhist(IM,maxval+1);
bar(x,counts,'b','EdgeColor','b');
%Replace first 20 bins with zero
p=20;
for i=1:p
counts(p)=0;
end
for some reason this is only deleting the bin with p=0 ??
Next I want to supress higher bins, that is remove both x and counts from the histogram data so I can output it to excel, so say i want to delete bins totally from 20,000 to 65536. Not sure how to do this.

Best Answer

p is a constant in your code, equal to 20, so "for some reason this is only deleting the bin with p=0" shouldn't be what happens. What should happen is that only bin 20 is set to 0. If you'd use the loop counter i instead of p, then you'd set bins 1:20 to 0.
counts(i) = 0; %not p
However, there's really no need for a loop. I think you need to go back to the basics of matlab an learn about array and matrix manipulation. The loop is equivalent to:
counts(1:20) = 0;
Similarly to completely remove all the bins above 20000:
counts(20000:end) = [];