secondye 发表于 2010-12-18 15:02

bar3三维柱状图的问题

本帖最后由 secondye 于 2010-12-18 15:06 编辑

请教一下,本人想画出三维柱状图,想法是这样:
1、当系统阶数为10时,识别出共5阶模态,对应当MAC值为;
2、当系统阶数为20时,识别出共9阶模态,对应当MAC值为;
.
.
.
.
以此类推,到系统阶数为200时,共识别出30阶模态。
本人想作出一个三维柱状图,X轴为频率,y轴为系统阶数,Z轴为MAC值。把对应不同阶数下识别出来的模态频率及MAC值都画在同一幅三维柱状图上。就像下面的图所示
http://forum.vibunion.com/data/attachment/album/201012/18/150605bna1ntzzkqk20xxt.jpg

但遇到几个问题:
1、系统阶数为变量,从10,20,30,......,200,定义为Y轴吧
2、对应不同的阶数,识别出来的频率的数目也是变量
3、要把MAC值对应系统阶数表示,就是说在Y轴的10,20,30.....这些位置上画出来

请教一下各位大侠

zhouyang664 发表于 2010-12-18 21:48

你看看下面这段代码有没有帮助:
%程序段来自仿真论坛的大牛,具体是谁记不清了,请原创者见谅
clear
x=1:4:17;%每个立柱左下角的横坐标
x=;    %如果需要画双层的柱体可以这样使用
y=1:5;   %每个立柱左下角的纵坐标
y=;
z=rand(1,5)*4;   %底层每个立柱的高度
z=;   %上层立柱高度
w=rand(1,5)*2;   %每个立柱的宽度,如果截面不是正方形的需要稍微修改程序
w=;
%以下三个矩阵用来生成坐标
xx=[   NaN   0   4   NaN
   0   0   4   4
   0   0   4   4
   NaN   0   4   NaN
   NaN   0   4   NaN
   NaN   NaN   NaN   NaN];
yy=[ NaN   0   0   NaN
   0   0   0   0
   4   4   4   4
   NaN   4   4   NaN
   NaN   0   0   NaN
   NaN   NaN   NaN   NaN];
zz=[ NaN   0   0   NaN
   0   1   1   0
   0   1   1   0
   NaN   0   0   NaN
   NaN   0   0   NaN
   NaN   NaN   NaN   NaN];
nn=length(x)/2;
for n=1:nn
    XX=xx;
    YY=yy;
    ZZ=zz;
    XX(XX==4)=w(n);
    YY(YY==4)=w(n);
    ZZ(ZZ==1)=z(n+nn)+z(n);
    ZZ(ZZ==0)=z(n);
    X=XX+x(n);   %x轴
    Y=YY+y(n);   %y轴
    Z=ZZ;          %z轴
    cc = ones(size(yy,1),4).*rand*6;%颜色,这里是随机取的
    h=[];
    %下面循环用surface函数绘图
    for i=1:size(yy,2)/4
      h = [h,surface('xdata',X,...
                              'ydata',Y(:,(i-1)*4+(1:4)), ...
                              'zdata',Z(:,(i-1)*4+(1:4)),...
                              'cdata',i*cc)];
    end
end
for n=1:nn
    XX=xx;
    YY=yy;
    ZZ=zz;
    XX(XX==4)=w(n);
    YY(YY==4)=w(n);
    ZZ(ZZ==1)=z(n);
    X=XX+x(n);   %x轴
    Y=YY+y(n);   %y轴
    Z=ZZ;          %z轴
    cc = ones(size(yy,1),4).*rand*6;%颜色,这里是随机取的
    h=[];
    %下面循环用surface函数绘图
    for i=1:size(yy,2)/4
      h = [h,surface('xdata',X,...
                              'ydata',Y(:,(i-1)*4+(1:4)), ...
                              'zdata',Z(:,(i-1)*4+(1:4)),...
                              'cdata',i*cc)];
    end
end
view(30,60)    %控制视角

ChaChing 发表于 2010-12-18 23:35

仅试执行ls程序, 没有细看
反正就是善用nan
页: [1]
查看完整版本: bar3三维柱状图的问题