2012-07-20 358 views
0

我有点卡在MATLAB中绘制3D数组。我创建了一些直方图,因为我改变了某个阈值。意思是,对于t = 65,我有一个直方图,t = 70,另一个等等。我想制作一个三维图或曲面,其中第三维是该阈值(t从0到100的间隔为5),另外两个维度分别是强度和频率(如2D直方图)。我怎样才能做到这一点?我已经看过了大多数绘图工具,如冲浪,等值面,切片等等。他们似乎都没有做到这一点。我的矩阵是80x100x20,其中20维度是阈值的维度。有任何想法吗?谢谢!三维矩阵Matlab绘图

+0

是您的矩阵80x100x20 _after_你直方图呢?否则,额外的维度是什么? – Isaac 2012-07-20 12:33:08

+0

@elektrochose:常规直方图产生一维数据(对于每个箱,你有一个计数/频率)。你能更具体地了解你的数据矩阵吗? – Amro 2012-07-20 12:47:59

+0

我的错误,矩阵是2x80x20。 有80个垃圾箱。 和20个直方图。 – elektrochose 2012-07-20 13:21:11

回答

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 

screenshot

+0

是的!这是我正在寻找的。我现在意识到我的错误。当我真的只有2岁时,我认为我正在处理3个维度。你的例子帮助我了很多!谢谢 – elektrochose 2012-07-20 13:44:06

+0

@elektrochose:很高兴我能帮上忙 – Amro 2012-07-20 13:48:45