MATLAB: How to change axis size without affecting bin size

histogram

n=100;
for i=1:3000
ZZ=Zf{i};
DD=Df{i};
Zf2=linspace(min(ZZ(:)),max(ZZ(:)),n);
Df2=linspace(min(DD(:)),max(DD(:)),n);
Zfr=interp1(Zf2,1:numel(Zf2),ZZ,'nearest');
Dfr=interp1(Df2,1:numel(Df2),DD,'nearest');
zm=accumarray([Dfr Zfr],1,[n n]);
surf(zm);
hold on
end
This code generates the following histogram
How do I modify the x and y axis to make them go up until the max of Dfr and Zfr but still have the number of bins remain 100?

Best Answer

[Zf_S, Zf_L] = cellfun(@(B) bounds(B, 'all'), Zf);
Zf_max = max(Zf_L);
Zf_min = min(Zf_S);
Zf_vals = linspace(Zf_min, Zf_max, n);
[Df_S, Df_L] = cellfun(@(B) bounds(B, 'all'), Df);
Df_max = max(Df_L);
Df_min = min(Df_S);
Df_vals = linspace(Df_min, Df_max, n);
Now do your interpolation with respect to Zf_vals and Df_vals instead of with respect to a vector that changes each time.
Hint: discretize() instead of interpolation .