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)

一个小问题,当数据维数不大的时候,无太多差异。Matlab--按颜色画网格bar3 不同于surf,pcolor

Matlab--按颜色画网格bar3 不同于surf,pcolor

这是两组60*60的数据,上面是bar3,下面是surf。

当数据比较少的时候,如果只有6*6


Matlab--按颜色画网格bar3 不同于surf,pcolor

Matlab--按颜色画网格bar3 不同于surf,pcolor

差异就明显了,上图bar3,每行有6个格,下图surf,第行有5个格,是两个值的差异来画的。

所以,当数据多的时候,或是只关注曲面的变化形势时,用surf没问题,esle,如果要说明一个图有多少个点,比如神经网络的节点个数,则最好使用bar3。

更新:

  1. col=z;
  2. h=imagesc(col);
  3. axis equal
  4. axis tight
  5. % k=[0 max(z(:))-min(z(:))]
  6. k=[min(z(:)) max(z(:))]
  7. colormap(jet)
  8. caxis(k);
  9. view(0,90)
  10. colorbar

Matlab--按颜色画网格bar3 不同于surf,pcolor


又更新: 

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了,老好用了。

转载自:https://blog.csdn.net/meatball1982/article/details/47299997?locationNum=1&fps=1

相关文章:

  • 2021-07-09
  • 2022-12-23
  • 2021-11-20
  • 2021-04-08
  • 2022-12-23
  • 2021-11-04
  • 2021-07-14
猜你喜欢
  • 2022-12-23
  • 2021-11-20
  • 2022-12-23
  • 2022-12-23
  • 2021-11-20
  • 2021-07-08
  • 2021-09-16
相关资源
相似解决方案