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.....这些位置上画出来
请教一下各位大侠
你看看下面这段代码有没有帮助:
%程序段来自仿真论坛的大牛,具体是谁记不清了,请原创者见谅
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) %控制视角
仅试执行ls程序, 没有细看
反正就是善用nan
页:
[1]