MATLAB二维图形及其应用

更新时间:2023-10-27 02:33:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

MATLAB绘制二维、三维图形

例2-1 在子图形窗口中画出 上正弦、余弦曲线。 x=0:0.1*pi:2*pi;%按步长赋值生成x向量

y=sin(x); z=cos(x);%生成正弦、余弦函数值y、z向量 subplot(2,1,1)%分图形窗口为2行1列,并在第一个子窗中绘图 plot(x,y,x,z)%在第一个子窗中画出正弦、余弦曲线 subplot(2,1,2)%在第二个子窗中绘图

plot(x,y,'k:',x,z,'r-')%在第二个子窗中用不同颜色画两条曲线 hold on%保持第二个子窗中绘图

plot(x,y,'bo',x,z,'k+')%用'o'和'+'标记曲线上分点 hold off%取消图形保持

例2-2 画出 上正弦、余弦曲线并对线型加粗、点型加大,重新定置坐标系以及加注相说明和注释。

x=0:0.1*pi:2*pi;%按步长赋值生成x向量 y=sin(x); %生成正弦、余弦函数值y、z向量 z=cos(x);

plot(x,y, 'b-', x,z, 'k .-','linewidth',3, 'markersize',15) axis([-0.2*pi 2*pi -1.2 1.2])%重新设置图形窗口坐标轴范围 grid%加注坐标网格

xlabel('Variable \\it{x}')%标记横坐标轴, \\it{x}表示x为斜体 ylabel('Variable \\it{y}')%标记纵坐标轴 title('Sine and Cosine Cruves')%标记图名

text(2.5,0.7,'Sin(x)')%在(2.5,0.7)位置,标记曲线名称 text(1.5,0.1,'Cos(x)')%在(1.5,0.1)位置,标记曲线名称 hold on%图形保持,在同一图形窗口中叠加图形

plot([0,2*pi],[0,0], 'r-.')%叠加一条红色的点划直线 0,0)到(2pi,0) hold off%图形保持取消,再画图时将另辟窗口

例2-3 分别在两个图形窗口画出填充一正方形和极坐标方程 的图形。 h1=figure;%打开第一个图形窗口,返回其图标识号(句柄)h1 x=[0 1 1 0 0];%闭合图形的顶点横坐标向量 y=[0 0 1 1 0];%闭合图形的顶点纵坐标向量 fill(x,y,'y') %填充闭合图形(用黄颜色) axis([-1 2 -1 2]) %重新设置坐标轴

h2=figure;%打开第二个图形窗口,返回其图标识号(句柄)h2 theta=linspace(0,2*pi);%对theta角的范围进行划分,生成分点向量 rho=sin(2*theta).*cos(2*theta);%生成相应极坐标方程的极径rho向量

polar(theta,rho,'r')%绘制相应的极坐标方程图形(用红颜色) title('Polar plot of sin(2*theta)cos(2*theta)')%添加图形标题 set(h2,'linewidth',3)%对第二个窗口中曲线加粗 例2-4在[-2.5,2.5]上画出函数 的直方图和阶梯图。 x=linspace(-2.5,2.5,20);%产生横坐标x向量 y=exp(-x.*x);%生成函数值向量

h1=subplot(1,2,1);%分图形窗口并在第一个子窗中绘图,返回其句柄h1 bar(x,y) %画出直方图

title(' Bar Chart of a Bell Curve ')%添加图形标题 h2= subplot(1,2,2);%在第二个子窗中绘图,返回其句柄h2 stairs(x,y) %画出阶梯图

title('Stairs Plot of a Bell Curve ')%添加图形标题

例2-5 采用不同形式(直角坐标、参数、极坐标),画出单位圆 的图形。 (1)直角坐标系

x=-1:0.01:1; %对x的范围进行划分,生成分点向量 y1=sqrt(1-x.^2);%生成上半单位圆的函数值向量 y2=-y1;%生成下半单位圆的函数值向量 plot(x,y1,x,y2);%同时画出上半圆和下半圆 axis equal%让坐标系中两个坐标轴取值相同 (2)参数方程

t=0:0.01*pi:2*pi;%对t的范围进行划分,生成分点向量 x=cos(t); y=sin(t);%生成单位圆上的函数值向量 plot(x,y);%画出单位圆

axis equal%让坐标系中两个坐标轴取值相同 (3)极坐标系

t=0:0.01*pi:2*pi;%对t的范围进行划分,生成分点向量 r=1+0*t;%生成单位圆的极径r向量 polar(t,r)%绘制相应的极坐标方程图形

例2-6 画出螺旋线:x=sin(t),y=cos(t),z=t,上一段曲线。 t=0:pi/50:10*pi;%生成参数t数组 X=sin(t);%生成螺旋线X数组 Y=cos(t);%生成螺旋线Y数组 Z=t;%生成螺旋线Z数组

plot3(X,Y,Z, 'k-', 'linewidth',3) %画螺旋线 grid

例2-7 画出矩形域[-1,1] ×[-1,1]上旋转抛物面:

x=linspace(-1,1,100);%分割[-1,1]区间生成x y=x;%y与x相同

[X,Y]=meshgrid(x,y); %生成矩形域[-1,1] ×[-1,1]网格节点坐标矩阵 Z=X.^2+Y.^2;%生成 函数值矩阵 subplot(1,2,1)

mesh(X,Y,Z) ;%在第一个子图中画 网格曲面 subplot(1,2,2)

surf(X,Y,Z) ;%在第二个子图中画 光滑曲面 shading flat ;%对曲面 平滑并除去网格 例2-8 在圆形域 上绘制旋转抛物面: 。 x=linspace(-1,1,300);%分割[-1,1]区间生成x y=x;%生成y

[X,Y]=meshgrid(x,y); %生成矩形域[-1,1]X[-1,1]网格节点坐标矩阵 Z=X.^2+Y.^2;%生成 函数值矩阵

i=find(Z>1);%找出圆域 之外的函数值(z>1)坐标点i Z(i)=NaN;%对圆域 之外的坐标点i处函数值进行“赋空” subplot(1,2,1)

mesh(X,Y,Z) ;%在第一个子图中画 网格曲面 subplot(1,2,2)

surf(X,Y,Z) ;%在第二个子图中画 光滑曲面 shading flat ;%对曲面平滑并除去网格 例2-9 画出 在 上的图形。 x=-7.5:0.5:7.5; y=x;

[X,Y]=meshgrid(x,y);

u=sqrt(X.^2+Y.^2)+eps;%加eps使得u不等于0,保证z有意义 Z=sin(u)./u; surf(X,Y,Z)

实验3MATLAB编程介绍与循环结构

?例3-1:求n(n=100)个奇数的和:s=1+3+5+?+(2n-1). clear;clc;%清除内存变量,清理命令窗口 n=100;%赋值给定奇数的个数 s=0;%设定存放和的变量s并赋初值0

for i=1:n%定义循环变量i从1到n,以1为步长,即为奇数序号 s=s+(2*i-1);%先计算右端奇数并累加后再赋给左端的变量s

fprintf('i=%.0f, s=%.0f\\n',i,s)%逐行显示出累加求和的过程 end%循环结构结束

例3-2:求正整数n的阶乘:p=1×2 × 3 × ? × n = n!,并求出n=20时的结果。 clear;clc;

%清除内存变量,清理命令窗口 n=20;%赋值给定正整数

p=1;%设定存放阶乘的变量p并赋初值1

for i=1:n%定义循环变量i从1到n,以1为步长,即连续正整数 p=p*i;%先计算右端乘积后再赋给左端的变量p fprintf('i=%.0f, p=%.0f\\n',i,p)%逐行显示出i! end%循环结构结束

例3-3:根据麦克劳林公式可以得到e≈1+1+1/2!+1/3!+?+1/n!,试求e的近似值。 clear;clc;%清除内存变量,清理命令窗口 n=10;

%赋值给定正整数

p=1;%设定存放阶乘的变量p并赋初值1 s=1;%设定存放累加和的变量s并赋初值1 for i=1:n%定义循环变量i从1到n,以1为步长

p=p*i;%先计算右端乘积后再赋给左端的变量p,此时p为i的阶乘 s=s+1/p;

%先计算右端阶乘倒数的累加后再赋给左端的变量s

fprintf('i=%.0f, s=%.8f\\n',i,s)%逐行显示出第i次e的近似值 end%循环结构结束

例3-4:对于数列 ,求其前n项和不超过1000时的n的值及和. clear;clc;%清除内存变量,清理命令窗口 n=0;%设定正整数并赋初值0

s=0;%设定存放累加和的变量s并赋初值0

while s<=1000%用累加和s与1000进行比较作为循环条件 n=n+1;%改变n为连续正整数

s=s+sqrt(n);%先计算右端开方数的累加后再赋给左端的变量s fprintf('n=%.0f, s=%.4f\\n',n,s)%逐行显示正整数及部分和 end%循环结构结束

例3-5:根据e≈1+1+1/2!+1/3!+?+1/n! 求e的近似值,要求精确到 。 clear;clc;%清除内存变量,清理命令窗口 p=1;%设定存放阶乘的变量p并赋初值1 s=1;%设定存放累加和的变量s并赋初值1

r=1;%设定前后两次近似值的误差r并赋初值1

k=0;%设定构造连续正整数的变量k赋初值0又为循环次数 while r>=1.0e-8%当近似值的精度r没达到 时继续循环 k=k+1;%累计循环次数并作为下一个正整数k p=p*k;%计算k的阶乘p

r=1/p;%计算前后两次近似值的误差r s=s+r;

%计算e的近似值s

fprintf('k=%.0f, s=%.10f\\n',k,s)%逐行显示出第k次e的近似值s end%循环结构结束

实验4 MATLAB选择结构与应用实验

例4-1:求任意有限数组a=[a(1),a(2),?,a(n)]中数值最大的元素M以及所在位置k. Function [M,k]=findM(a)

定义函数findM,输入数组a,返回最大元素M及位置k n=length(a);%获取数组的长度即元素的个数n

M=a(1); k=1;%将第一个元素作为最大值赋值给M,位置为1; for i=2:n%从第二个元素到最后一个元素依次进行 if a(i)>M

%比较后续元素与目前最大值M的大小

M=a(i); k=i;%将数值较大的元素赋值给M,同时保留位置i end%选择结构结束 end %循环结构结束

a=[1,2.2,pi,-0.8,3.2,0]; 任意给定一数组 [M,k]=findM(a)%调用函数findM

例4-2:编写一个函数将百分制成绩转换为优(A),良(B),中(C),差(D)四等级. Function jb=dengji(fs)

%定义函数dengji,输入分数fs,返回等级A,B,C,D if fs>=90%判断分数fs是否处在优秀级别上 jb=' A ';%定义为A级

elseif fs>=78%判断分数fs是否处在良好级别上 jb=' B ';%定义为B级

elseif fs>=60%判断分数fs是否处在合格级别上 jb=' C ';%定义为C级

else%分数fs不处于以上任何级别上

本文来源:https://www.bwwdw.com/article/nin2.html

Top