|
你看看下面这段代码有没有帮助:
%程序段来自仿真论坛的大牛,具体是谁记不清了,请原创者见谅
clear
x=1:4:17; % 每个立柱左下角的横坐标
x=[x,x]; % 如果需要画双层的柱体可以这样使用
y=1:5; % 每个立柱左下角的纵坐标
y=[y y];
z=rand(1,5)*4; % 底层每个立柱的高度
z=[z rand(1,5)*4]; % 上层立柱高度
w=rand(1,5)*2; % 每个立柱的宽度,如果截面不是正方形的需要稍微修改程序
w=[w 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) % 控制视角
|
评分
-
1
查看全部评分
-
|