matlab例题.docx
《matlab例题.docx》由会员分享,可在线阅读,更多相关《matlab例题.docx(19页珍藏版)》请在冰点文库上搜索。
matlab例题
【例一.1】绘制简单函数的曲线图。
x=-5:
.1:
5;y=x.^2;subplot(2,2,1);plot(x,y);%x-y曲线
subplot(2,2,2);plot(y,x);t=x;%y-x曲线
subplot(2,2,3);plot(t.*cos(t),t.*sin(t));%参数函数的曲线
subplot(2,2,4);plot3(t.*cos(t),t.*sin(t),t);
图3.5-2简单函数的曲线图绘制
【例一.2】在一张图上简单绘制多条曲线。
x1=linspace(0,4,50);y1=sin(x1*pi);
x2=linspace(2,5,30);y2=x2;
x3=linspace(1,7,80);y3=sqrt(x3);
plot(x1,y1,x2,y2,x3,y3);
图3.5-3一张图上绘制多条曲线
【例一.3】二维图形对象的操作:
填充y=sin(πx)+4和y=x2之间的区域。
x=linspace(-3,3,100);
y1=sin(x*pi)+4;y2=x.^2;
plot(x,[y1;y2]);
xlabel('x');ylabel('y');
text(-2.6,7,'\leftarrowx^2','fontsize',16);
text(-1.2,5.1,'sin(x\pi)+4\rightarrow',...
'fontname','courier',...%设置text字体属性
'fontangle','italic',...%设置text字体倾斜属性
'fontsize',14);%设置text字体大小属性
legend('sin(x\pi)+4','x^2',0);%添加图例
holdon;%设置绘图方式为保持
xf=linspace(-2,2,100);
y1f=sin(xf*pi)+4;y2f=xf.^2;
%从最左边开始,按逆时针方向在y1f和y2f上形成多边形并填充
fill([xffliplr(xf)],[y1f,fliplr(y2f)],'r');
text(-1.2,2,'areabetweentwofunctions');
axis([-330inf]);%设置坐标范围
%设置坐标刻度,并在刻度标签上标注交点坐标(cx1,cy)和(cx2,cy)
set(gca,'YTick',0:
9);
set(gca,'YTickLabel','0|1|2|3|cy|5|6|7|8|9');
set(gca,'XTick',-3:
3);
set(gca,'XTickLabel',{'-3''cx1''-2''0''1''cx2''3'})
图3.5-4二维图形对象的操作示例
【例一.4】plotyy函数的使用:
已知
,分别绘制A=200,α=0.05,β=1,f=0.2和A=0.8,α=0.5,β=2,f=2时y的图形,并用Tex字符串在图上标注出这些参数值。
t=0:
0.01:
20;
A1=200;alf1=0.05;bt1=1;f1=0.2;
A2=0.8;alf2=0.5;bt2=2;f2=2;
y1=A1*exp(-alf1*t).*sin(2*pi*f1*t+bt1);
y2=A2*exp(-alf2*t).*sin(2*pi*f2*t+bt2);
%用plot方式绘制双y轴曲线,并返回坐标盒和绘制曲线的句柄
[AX,H1,H2]=plotyy(t,y1,t,y2,'plot');
%设置每个坐标盒的横轴刻度
set(AX
(1),'xtick',0:
2:
20);set(AX
(2),'xtick',0:
2:
20);
%获取每个坐标盒的Ylabel句柄以设置其字符串属性
set(get(AX
(1),'Ylabel'),'String','LeftY-axis');
set(get(AX
(2),'Ylabel'),'String','RightY-axis');
xlabel('0to20\musec.');
title('anexamplefor''plotyy''');
%分别设置两条曲线的线型
set(H1,'LineStyle','--');set(H2,'LineStyle',':
');
%生成字符串单元数组,用于在图形窗上显示多行文本
sT
(1)={['{\itAe^{\fontsize{10}{-\alphat}}}',...
'sin(2{\it\pift}+{\it\beta})']};
sT
(2)={['Leftline:
','{\itA}=',num2str(A1),';'...
'{\it\alpha}=',num2str(alf1),';'...
'{\itf}=',num2str(f1),';'...
'{\it\beta}=',num2str(bt1)]};
sT(3)={['Rightline:
','{\itA}=',num2str(A2),';'...
'{\it\alpha}=',num2str(alf2),';'...
'{\itf}=',num2str(f2),';'...
'{\it\beta}=',num2str(bt2)]};
%用鼠标指定文本的显示位置,同时设置文本的显示属性
gtext(sT,'fontsize',12,...
'HorizontalAlignment','right',...
'edgecolor','red',...
'backgroundcolor',[0.7,0.7,0.7])';
图3.5-5用plotyy同时绘制具有不同纵坐标范围的两条曲线
【例一.5】绘制条形图。
Y=[521
873
986
432]+10;
subplot(2,3,1);bar(Y);gridon;
set(gca,'YLim',[1020]);
subplot(2,3,2);bar(Y,'stack');
gridon;set(gca,'YLim',[1060],'Layer','top')
subplot(2,3,4);bar3(Y,'group');
subplot(2,3,5);bar3(Y,'stack');
set(gca,'ZLim',[1060]);
subplot(2,3,6);bar3(Y);
图3.5-6各种各样的条形图
【例一.6】已知90-94年的销售额和成本,按年绘出利润面积图和成本饼图。
year=90:
94;sales=[51.682.490.859.147.0];%销售额
cost=[21.339.559.349.428.3];%成本
subplot(1,2,1);%在第一个子图中绘销售面积图
subplot(1,2,1);area(year,sales,'FaceColor',[.5.9.6],...
'EdgeColor','b','LineWidth',2);
%第一个子图中叠绘成本面积图
holdon;area(year,costs,'FaceColor',[.9.85.7],...
'EdgeColor','y','LineWidth',2);holdoff;
set(gca,'XTick',[90:
94]);set(gca,'Layer','top');gridon;
ylabel('Sales-Profit=Cost','FontSize',14)
gtext('\leftarrowSales');gtext('Cost');gtext('profit');
%在第二个子图中绘年成本饼图,其中最大的饼块分离显示。
subplot(1,2,2);[c,offset]=max(cost);
explode=zeros(size(cost));explode(offset)=1;
h=pie(cost,explode);colormapsummer;
%为饼图中的每个文本对象添加年标记
txtObjs=findobj(h,'Type','text');%找到所有文本对象的句柄
oldStr=get(txtObjs,{'String'});%记录所有文本对象的值
fori=1:
length(year);%为每个文本对象生成新值
names{i}=['Y',num2str(year(i)),':
'];end;
newStr=strcat(names,oldStr);
set(txtObjs,{'String'},newStr);%重新设置文本对象的值
图3.5-7面积图和饼图
【例一.7】已知三维弹道的位置函数和初速度,试绘制t从0到1的弹道曲线。
a=-32;vx=2;vy=3;vz=10;t=0:
.1:
1;
x=vx*t;y=vy*t;z=vz*t+1/2*a*t.^2;
%计算不同方向上的数值梯度
u=gradient(x);v=gradient(y);w=gradient(z);
subplot(121);quiver3(x,y,z,u,v,w);%绘制位置点上的速度矢量
view([10,-80,10]);axissquare;
subplot(122);stem3(x,y,z,'b');%绘制运动轨迹
holdon;comet3(x,y,z);holdoff;%以动画方式绘制运动轨迹
图3.5-8特殊三维曲线的绘制
【例一.8】绘制三维数据的等值线图。
[X,Y,Z]=peaks(20);%获取三维数据
subplot(231);contour(Z,10);%绘制10条等高线
subplot(232);contour(X,Y,Z,5);%绘制5条等高线
%在等高线图上绘制速度羽线(用来反映数据的梯度信息)
holdon;
[U,V]=gradient(Z,.2);
quiver(X,Y,U,V);
holdoff;
%在等高线图上添加高度信息文本
subplot(233);[Ch]=contour(Z,5);p=clabel(C,h);
htxt=findobj(p,'type','text');
set(htxt,'fontsize',7);
st=char(get(htxt,{'string'}));
s=cellstr(st(:
[1:
4]));
set(htxt,{'string'},s);
%绘制3维等高线
subplot(234);contour3(Z,10);
%绘制2维等高线,并用颜色填充图形(颜色反映了数据的高度信息)
subplot(235);[C,h]=contourf(Z,10);
caxis([-2020])
图3.5-9绘制不同的等值线图
【例一.9】制作基于图象帧的动画。
Z=peaks;surf(Z);axistight;
set(gca,'nextplot','replacechildren');
forj=1:
20%捕获20帧图象存为F
surf(sin(2*pi*j/20)*Z);
F(:
j)=getframe;
end
movie(F,10)%将记录的20帧图象回放10次
图3.5-10用图象帧制作动画效果
【例一.10】Lorenz奇异吸引子的动态演示。
该混沌现象由下述非线性差分方程描述,其运动轨迹围绕空间两个吸引子,但是没有稳定状态。
本例采用固定步长的Euler数值方法图示该现象,例中假设y的初值为[35-10-7]。
A=[-8/300;0-1010;028-1];y=[35-10-7]';
delt_t=0.01;%设定计算步长
p=plot3(y
(1),y
(2),y(3),'.',...
'EraseMode','none','MarkerSize',2);
axis([050-2525-2525]);holdon;
fori=1:
4000%设定计算次数
A(1,3)=y
(2);A(3,1)=-y
(2);dydt=A*y;
y=y+dydt*delt_t;%用y+dy/dt*∆t近似下一时刻的y
set(p,'XData',y
(1),'YData',y
(2),'ZData',y(3))
drawnow%强迫刷新
end
图3.5-11Lorenz奇异吸引子的动态显示
【例一.11】渲染sinc函数表示的空间曲面。
[X,Y]=meshgrid(-8:
.5:
8);R=sqrt(X.^2+Y.^2)+eps;Z=sin(R)./R;
surf(X,Y,Z,'FaceColor','interp',%设定曲面颜色的使用方式
'EdgeColor','none',%设定不显示网格线的颜色
'FaceLighting','phong');%设定曲面光照模型
axistight;
%设定坐标刻度比例(z轴单位线段的长度是x、y轴单位线段长度的5倍)
daspect([551]);
camlightleft%设定光源在左侧
view(-50,30);%设定视角
图3.5-12空间曲面的渲染
【例一.12】非规则数据的曲面表现和二维数据插值:
假设数据来自二维sinc函数的非均匀采样。
x=rand(100,1)*16-8;y=rand(100,1)*16-8;
r=sqrt(x.^2+y.^2)+eps;z=sin(r)./r;
%生成作图用的均匀平面网格
xlin=linspace(min(x),max(x),30);
ylin=linspace(min(y),max(y),30);
[X,Y]=meshgrid(xlin,ylin);
%通过插值方法获得均匀平面网格上的Z数据
Z=griddata(x,y,z,X,Y,'cubic');
mesh(X,Y,Z);axistight;
%为查看插值效果,在图形上叠加原始数据样点
holdon;plot3(x,y,z,'.','MarkerSize',15)
图3.5-13非规则数据的曲面表现和二维数据插值
【例一.13】NaN在绘图中的应用。
(注:
绘图函数会忽略数据中的非数NaN。
)
x=-1:
.01:
1;[X,Y]=meshgrid(x,x);
x(length(x)/3:
length(x)/3*2)=nan;
subplot(121);plot(x);
Z=-X.^2-Y.^2;Z(Z>-0.5)=nan;
subplot(122);mesh(X,Y,Z);axistight;
图3.5-14NaN在绘图中的应用
【例一.14】函数
表示的空间曲面。
[x,y]=meshgrid([-2:
.2:
2]);Z=x.*exp(-x.^2-y.^2);
subplot(121);
%使用默认色图,指定颜色参数为Z的梯度(即颜色反映了该位置的梯度)
surf(x,y,Z,gradient(Z));
colorbar;%显示高度-颜色指示条(作用类似于图例)
%用随机颜色分量生成颜色数组C(真彩色)
c=rand(size(Z,1)*3,size(Z,2))*.3+.7;
C(:
:
1)=c(1:
size(Z,1),:
);
C(:
:
2)=c(size(Z,1)+1:
size(Z,1)*2,:
);
C(:
:
3)=c(size(Z,1)*2+1:
end,:
);subplot(122);
surf(x,y,Z,C,...%用真彩色显示曲面
'FaceColor','interp','FaceLighting','phong')
图3.5-15颜色在空间曲面表现中的应用
【例一.15】动态演示风的三维流线。
loadwind;%载入MATLAB自带的演示数据
[sxsysz]=meshgrid(100,20:
2:
50,5);%生成三维网格
verts=stream3(x,y,z,u,v,w,sx,sy,sz);%计算三维流线
sl=streamline(verts);%绘制三维流线
view(-10.5,18);%设定视角
daspect([220.125]);%设定坐标轴刻度的比例关系
axistight;%设定坐标盒紧包围
boxon;%显示坐标盒线框
%流线顶点插值
iverts=interpstreamspeed(x,y,z,u,v,w,verts,0.01);
streamparticles(iverts,15,...%显示15个运动的颗粒
'Animate',10,...%动画播放10次
'ParticleAlignment','on')%颗粒从起始位置开始运动
图3.5-16三维流线的动态图形表现
【例一.16】绘制ρ=1+cos(t)的极坐标图。
symst;
ezpolar(1+cos(t))
图3.5-17ρ=1+cos(t)表示的极坐标图
【例一.17】a)在同一个坐标盒内分别绘制a=1,b=2和a=2,b=1时隐函数
的图形;b)单独绘制参数方程
表示的图形。
%ezplot支持字符串参数和符号表达式参数;默认参数方程的自变量为t
symsxyab;
a=1;b=2;subplot(121);
ezplot(x^2./a^2+y^2./b^2-1,[-2.12.1])
holdon;a=2;b=1;
ezplot(x^2./a^2+y^2./b^2-1)
subplot(122);ezplot('5*t','t^2')
图3.5-18绘制隐函数和参数方程的图形
【例一.18】绘制函数
表示的空间曲面。
symsxy;
f=exp(-x^2-(y+1)^2)-exp(-(x+1)^2-y^2);
%把xy平面上的正方形区间[-3,3]划分为49个网格,然后作图
ezsurf(f,[-3,3],49);
view(0,75);%设置视角
shadinginterp;%设置阴影方式为插值
lightangle(-45,30);%设置光源方向
set(gcf,'Renderer','zbuffer');%设置计算机展现图形的方式
set(findobj(gca,'type','surface'),...
'FaceLighting','phong',...%设置光照模型为phong模型
'AmbientStrength',.3,...%设置环境光源光照强度
'DiffuseStrength',.8,...%设置漫反射系数
'SpecularStrength',.9,...%设置镜面反射系数
'SpecularExponent',25)%设置镜面反射区域的大小
图3.5-19符号函数可视化图形的渲染
【例一.19】在绘制好的三维sinc曲面上叠绘另一个曲面z=(x2+y2)/50。
ezsurf('sin(sqrt(x^2+y^2))/sqrt(x^2+y^2)',30);
holdon;ezsurf('(x^2+y^2)/50',30);
图3.5-20在同一坐标盒内绘制多个符号函数的图形
【例一.20】根屏幕的属性操作。
set(0,'units')%列出所有可用的度量单位
get(0,'units')%获取当前使用的度量单位
get(0,'ScreenSize')%返回屏幕的大小
set(0,'units','normal')%设置度量单位为归一化单位
get(0,'ScreenSize')%再次返回屏幕的大小
[inches|centimeters|normalized|points|pixels|characters]
ans=pixels
ans=111024768
ans=0011
【例一.21】以绘制正弦函数图形为例,演示设置图形对象默认属性的效果。
%在根屏幕上设置图形窗的默认颜色
set(0,'DefaultFigureColor',[111]);
t=0:
pi/20:
2*pi;s=sin(t);
%在指定位置创建图形窗,并在该层上指定默认的坐标盒颜色属性为白色
figh=figure('Position',[30100600350],...
'DefaultAxesColor','w');
axh1=subplot(1,2,1);gridon;
%在第一个坐标盒上指定默认的线型属性为点划线
set(axh1,'DefaultLineLineStyle','-.');
line('XData',t,'YData',s)%用指定的数据属性创建线对象
text('Position',[3.4],'String','Sine')
axh2=subplot(1,2,2);gridon;
%在第二个坐标盒上指定文本对象默认的旋转属性为90度
set(axh2,'DefaultTextRotation',90);
line('XData',t,'YData',s);
%在指定位置,用指定的字符串创建文本对象
text('Position',[3.4],'String','Sine')
%指定当前图形窗的鼠标指针属性为大十字
set(gcf,'Pointer','fullcross')
图3.5-23设置图形对象的默认属性
【例一.22】自定义正弦波鼠标指针
。
提示:
鼠标形状用16×16的矩阵表示,其元素值代表颜色:
1(黑色);2(白色);Nan(透明色)。
g=linspace(0,pi*2,16);c(1:
16,1:
16)=nan;
forn=1:
16;r=ceil(7*sin(g(n))+8);c([r,r+1],n)=1;end
%指定当前图形窗的鼠标指针属性为自定义,并指定指针形状数据来自c
set(gcf,'Pointer','custom','PointerShapeCData',c)
【例一.23】分别生成五面体线框图和面图。
vertex=[000;020;220;200;111];%定义顶点坐标
connect1=[125;235;345;415];%定义顶点间的连线
connect2=[1234];
pn=[1234152354];%定义点间划线顺序
x=vertex(pn,1);y=vertex(pn,2);z=vertex(pn,3);
subplot(121);plot3(x,y,z);%绘五面体线框图
subplot(122);
%用指定的顶点、连线、面颜色和面的边界颜色等属性绘五面体面图
patch('Vertices',vertex,'Faces',connect1,...
'FaceColor','b','EdgeColor','k');
patch('Vertices',vertex,'Faces',connect2,...
'FaceColor','r','EdgeColor','k');vi