|
本帖最后由 meatball1982 于 2016-3-2 14:24 编辑
- clear all
- clc
- close all
- [x,y,z]=peaks(60);
- h=bar3(z,1)
- for i = 1:length(h)
- zdata = get(h(i),'ZData');
- set(h(i),'CData',zdata)
- % Add back edge color removed by interpolating shading
- set(h,'EdgeColor','w')
- alpha(h,0.9)
- end
- axis equal
- grid off
- view(0,-90)
- hidden off
- colorbar
- % axis off
- surf(z,'edgecolor','w')
- axis equal
- view(0,90)
- hidden off
- colorbar
复制代码
之前,画3D的平面都是用surf,然后再view(0,90)
一个小问题,当数据维数不大的时候,无太多差异。
这是两组60*60的数据,上面是bar3,下面是surf。
当数据比较少的时候,如果只有6*6
差异就明显了,上图bar3,每行有6个格,下图surf,每行有5个格,是两个值的差异来画的。
所以,当数据多的时候,或是只关注曲面的变化形势时,用surf没问题,esle,如果要说明一个图有多少个点,比如神经网络的节点个数,则最好使用bar3。
更新:
- col=z;
- h=imagesc(col);
- axis equal
- axis tight
- % k=[0 max(z(:))-min(z(:))]
- k=[min(z(:)) max(z(:))]
- colormap(jet)
- caxis(k);
- view(0,90)
- colorbar
复制代码
又更新:
02-Mar-2016 14:13:41
每次用surf画图都少一行,少一列,也不是那个事儿.
于是,写了一个小函数.生成新的x,y,z,可以直接surf,然后,维数还是正确的.
- function [ X,Y,z_new ] = fun_mm_shift( z )
- %UNTITLED Summary of this function goes here
- % Detailed explanation goes here
- [m,n]=size(z);
- [X,Y]=meshgrid([1:(n+1)]-0.5,[1:(m+1)]-0.5);
- tm=z;
- tm=[z;z(end,:)];
- z_new=[tm';tm(:,end)']';
- end
复制代码
把z扔里面.就出来对应的新的x,y,z了.老好用了.
|
|