我有点卡在MATLAB中绘制3D数组。我创建了一些随着我改变某个阈值而变化的直方图。意思是,对于t = 65,我有一个直方图,t = 70,另一个,依此类推。我想制作一个三维图或表面,其中第三个维度是这个阈值(t从0到100的间隔为5),另外两个维度分别是强度和频率(对于2D直方图)。我怎样才能做到这一点?我已经看过大多数绘图工具,如冲浪,等值面,切片等。他们似乎都没有做到这一点。我的矩阵是80x100x20,其中20维是阈值的维度。有任何想法吗?谢谢!
答案 0 :(得分:1)
也许一个例子可能有所帮助:
%# 20 intervals
t = linspace(0,100,20+1);
labels = strtrim(cellstr(num2str([t(1:end-1);t(2:end)]', '[%g,%g)\n'))); %#'
%# some sample data parametrized by t
x = randn(1000,20);
[count,bins] = hist(x, 10);
%# plot 3D bar graph
bar3(bins, count, 'histc')
xlabel('param intervals'), ylabel('bins'), zlabel('counts')
set(gca, 'XTick',1:2:20, 'XTickLabel',labels(1:2:end))
axis tight