MATLAB程序设计及应用实例
matlab使用案例

matlab使用案例Matlab是一种数学计算软件,用于科学计算和工程领域的数学分析、可视化和编程任务。
Matlab的广泛应用包括控制系统设计、图像和视频处理、信号处理、机器学习、计算机视觉等等。
以下是Matlab具体应用案例。
1. 数据可视化和统计分析Matlab可以用来进行数据可视化和统计分析。
例如,可以用Matlab制作一份销售数据和趋势报告,该报告包含一些图表和数据汇总。
2. 信号处理使用Matlab,可以进行多种信号处理操作,如过滤、调制和解调,傅里叶变换和滤波器设计。
例如,可以用Matlab对电子信号进行滤波处理,去除噪音。
3. 机器学习Matlab提供了许多工具箱,如神经网络工具箱、统计和机器学习工具箱等,可以帮助用户构建各种机器学习模型。
例如,可以使用Matlab训练神经网络,来进行图像、语音和自然语言处理等任务。
4. 控制系统设计Matlab提供了广泛的工具箱,用于控制系统设计和仿真。
例如,可以使用Matlab创建控制系统模型,以检查和测试控制算法。
5. 信号处理和图像处理的应用Matlab有许多内置的函数和工具箱,用于信号处理和图像处理,如使用DIP Toolbox、Image Processing Toolbox、Bioinformatics Toolbox等。
例如,可以使用Matlab提取图像中的边缘、使用MATLAB中的特征函数对图像进行特征提取、并对图像进行分类。
6. 数学建模Matlab可用于数学建模计算。
例如,使用Matlab对不同的数学模型进行建模和求解,以进行不同领域的计算。
总结来说,Matlab在各种领域的应用正在逐渐增加。
从数据可视化到科学建模、从信号处理到机器学习,Matlab为科学工作者、工程师和程序员提供了广泛的程序库、工具箱和工具,可大大简化复杂问题的解决方案。
MATLAB程序设计及应用实例

MATLAB程序设计及应用实例MATLAB程序设计及应用实例一、引言1.1 研究背景1.2 目的和意义二、MATLAB入门2.1 MATLAB的基本概念2.2 MATLAB环境的配置2.3 MATLAB的基本操作2.4 基本数据类型和变量2.5 控制语句和循环结构三、向量和矩阵运算3.1 向量的定义和运算3.2 矩阵的定义和运算3.3 矩阵的转置、共轭和逆3.4 特殊矩阵的和操作3.5 矩阵的行列式和特征值计算四、函数的定义和调用4.1 函数的定义和语法4.2 函数的输入和输出参数4.3 匿名函数和内嵌函数4.4 函数的调试和错误处理五、图形化界面设计5.1 MATLAB的图形化界面工具箱5.2 GUI的设计和布局5.3 控件的属性设置和事件处理5.4 图像的读取和处理5.5 图表的绘制和交互操作六、数据分析与统计6.1 数据的导入和导出6.2 数据的预处理和清洗6.3 常用的数据统计和分析方法6.4 数据可视化和结果展示七、信号处理与图像处理7.1 信号的和处理7.2 傅里叶变换和频域分析7.3 滤波器的设计和应用7.4 图像的读取和处理7.5 图像的增强和分割八、机器学习与深度学习8.1 机器学习算法的基本原理8.2 机器学习工具箱的使用8.3 深度学习算法的基本原理8.4 深度学习工具箱的使用8.5 实例:图像分类和预测九、应用实例9.1 实例1:图像处理与分析9.2 实例2:信号处理与模式识别9.3 实例3:数据挖掘与预测十、总结与展望10.1 主要研究成果总结10.2 存在的问题和不足10.3 下一步工作的展望本文档涉及附件:- 附件1:MATLAB代码示例- 附件2:实验数据集法律名词及注释:- 版权:对创作作品的控制权和使用权的法律保护。
- 许可证:允许某人使用或复制作品的法律文件。
MATLAB程序设计及应用实例

MATLAB程序设计及应用实例MATLAB(Matrix Laboratory)是一种用于算法开发、数据分析、可视化和数值计算的高级技术计算语言和环境。
它的强大功能和灵活性使其成为各个领域研究和工程实践中广泛使用的工具。
下面将介绍几个MATLAB程序设计及应用的实例。
1.信号处理:MATLAB是信号处理的强大工具,它可以用于滤波、频谱分析、小波变换、分析和合成音频信号等。
例如,可以利用MATLAB进行语音信号的去噪处理,通过设计特定的滤波器来去除信号中的噪声成分,从而提取出清晰的语音信号。
2.图像处理:MATLAB可以进行图像的加载、处理和分析。
它提供了丰富的图像处理函数和工具箱,可以实现图像的滤波、二值化、边缘检测、图像增强等操作。
例如,可以使用MATLAB对医学图像进行分割,将感兴趣的区域提取出来,辅助医生进行病灶诊断。
3.控制系统设计:MATLAB是控制系统设计的有效工具。
它提供了丰富的控制系统分析和设计函数,可以进行系统建模、模拟和优化。
例如,可以使用MATLAB进行PID控制器的参数调整,通过对系统建模和后续仿真,优化PID控制器的参数,提高控制系统的性能和稳定性。
4.机器学习:MATLAB提供了强大的机器学习和深度学习工具箱,可以进行数据预处理、特征提取、模型训练和评估等操作。
例如,可以利用MATLAB进行图像分类,通过构建深度卷积神经网络模型,将输入的图像进行分类和识别。
5.数值计算:MATLAB对线性代数、数值优化和统计分析等有着强大的支持。
它提供的优化和求解函数可以解决复杂的线性和非线性优化问题,例如最小二乘拟合和参数估计等。
此外,MATLAB还拥有强大的统计分析工具,可以进行假设检验、数据拟合、方差分析等统计分析操作。
6.仿真模拟:MATLAB可以进行动态系统的建模和仿真,通过搭建系统方程和初始条件,可以对系统的动态响应进行模拟。
例如,在电力系统中,可以使用MATLAB进行电力系统稳定性分析,对电力系统的动态响应进行跟踪和分析。
MATLAB程序设计与应用习题

X =
1 1 1 0
2.11设a=[0 100],求~a的值?(非运算)
答:>> clear
>> a=[0 1 0 0]
a =
0 1 0 0
>> x=not(a)
x =
1 0 1 1
2.12设a=[0 120],b=[21 0 0],求axor b的值?
答:>> clear
答:>> clear
>> a=[0 2 1 0]
a =
0 2 1 0
>> b=[2 1 0 0]
b =
2 1 0 0
>> x=and(a,b)
x =
0 1 0 0
2.10设a=[0 120],b=[120 0],求a|b的值?(或运算)
答:
>> clear
>> a=[0 1 2 0];b=[1 2 0 0];
答:quit:关闭MATLAB。
clear:清除内存中的变量。
cla:清除坐标。
clf:清除图形。
clc:清除MATLAB命令窗口的所有显示信息。
hold:控制当前图形窗口是否被刷新。
1.9学会打开并保存程序编辑窗口,并在M文档中编写1.4的运算程序并进行运算。
答:要打开程序编辑窗口,我们可以在Command Window窗口中,单击工具栏中最左端显示为一张白纸的工具按钮。这样就打开了一个空白的程序编辑窗口,如图1-6所示。
3.6已知
将a(2,3)=-1替换为a(2,3)=0。
答:
3.7已知
将a的第二行元素全部替换为0,然后将第二列元素全部替换为1。
Matlab技术工程应用实例

Matlab技术工程应用实例引言:在当今信息化社会,工程技术的发展与应用已经成为推动社会进步和经济发展的重要支撑。
计算机技术的迅速发展使得在工程技术应用中,大量的数据处理、模拟和分析都可以通过计算机软件进行。
Matlab作为一种重要的工程软件工具,被广泛应用于各个领域中。
本文将介绍一些Matlab在工程技术中的应用实例,包括信号处理、图像处理、控制系统等多个方面,以展示Matlab在实际工程问题中的重要作用。
一、信号处理应用实例:信号处理是工程技术中的一个重要方向,涉及音频、图像、视频等多个领域的数据处理。
Matlab提供了丰富的信号处理工具包,广泛应用于音频分析、滤波等任务中。
例如,在音频处理中,可以通过Matlab实现音频的混响效果,通过模拟不同的房间声音,使得音频更加丰富和逼真。
此外,Matlab还可以实现音频频谱分析,用于音频的特征提取和音乐指纹识别等任务。
二、图像处理应用实例:图像处理是工程技术中另一个重要方向,主要涉及图像的增强、分割、识别和压缩等任务。
Matlab提供了强大的图像处理工具包,用于图像的滤波、变换和编码等任务。
例如,在医学图像处理中,可以通过Matlab实现磨皮效果,并提取出肿瘤区域进行更精确的诊断。
此外,Matlab还可以实现图像的人脸识别,用于安防系统和人脸解锁等应用。
三、控制系统设计实例:控制系统设计是工程技术中的一个重要方向,主要涉及自动控制和系统优化等任务。
Matlab提供了丰富的控制系统工具包,用于控制系统的建模、仿真和优化等任务。
例如,在电力系统中,可以通过Matlab实现电压的自动调节和负载的平衡,提高系统的稳定性和可靠性。
此外,Matlab还可以实现机器人的路径规划和控制,用于自动化生产线和无人驾驶等应用。
四、数值计算实例:数值计算是工程技术中的一个重要方向,主要涉及方程求解、优化问题和数值模拟等任务。
Matlab提供了丰富的数值计算工具包,用于求解复杂的数学问题。
MATLAB程序设计及应用实例

注意:等号左边是方括号,右边输入参数用括号
第14页,共67页。
例1 编写函数文件求半径为r的圆的面积和周长
function [s,p]=fcircle(r)
%FCIRCLE calculate the area and perimeter of a circle of radii r
disp函数
调用格式为
disp(输出项) 其中输出项既可以为字符串,也可以为矩阵。 注意:用disp函数显示矩阵时将不显示矩阵的 名字,而且其格式更紧密,且不留任何没有意 义的空行。
第22页,共67页。
例 求一元二次方程ax2+bx+c=0的根。
程序如下: a=input('a=?'); b=input('b=?'); c=input('c=?'); d=b*b-4*a*c; x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];
c=input('请输入一个字符','s'); if c>='A' & c<='Z'
disp(setstr(abs(c)+1)); elseif c>='a'& c<='z'
disp(setstr(abs(c)-1)); elseif c>='0'& c<='9'
disp(abs(c)-abs('0')); else
end 命令文件main5_2.m:
MATLAB工程应用实例

第3章MATLAB工程应用实例MATLAB在工程上的应用广泛,例如机械机构优化分析、机械控制、通信、数值计算等,MATLAB因其强大的数据处理能力,逐渐成为工程应用领域主导辅助工具。
本章主要应用MATLAB解决简单的工程问题,例如光反射定理、质点系转动惯量、人吸烟摄入有毒成分含量、冰雹下落模型的求解等,这类问题的优化求解对解决复杂的工程问题有着一定的参考价值,并能够提高结合MATLAB求解实际问题的能力。
学习目标:(1)熟练掌握MATLAB编程表示方法;(2)熟练运用MATLAB求解实际物理模型;(3)熟练掌握使用MATLAB工具解决简单工程问题等。
3.1 光的反射定理论证光的反射定理最早由费马提出,费马原理是:光总是沿用时最短的光程传播。
例如光线的入射、反射过程可由图3-1直观地表示出来,2中光线从1入射,发射到2点。
试证明光的反射定律:入射角等于反射角。
图3-1 光线反射示意图针对图3-1所示的光线反射路径图,假设X轴为实物体表面,且为理想状态,光线传播过程中无阻碍,一束自然光线沿路径L10’照射到X轴,与法线Y轴的夹角为θ1;光线经实物体表面X轴反射后,沿路径L0’2发射,与法线Y轴的夹角为θ2。
3.1.1 公式推算由光的直线传播可得,路径L10’、路径L0’2为直线;光线从1点到2点,两点在坐标·38·轴上的竖直方向上的投影相等,且为H ;光在空气中传播的速度为光线在真空中传播的速度C ;光线从1点到2点,1点与2点之间的距离为定值L ;光线经L 10’、L 0’2,所需时间为T 。
则光线从L 10’到L 0’2,所需时间为:10021212cos cos 11cos cos H HL L H T C C C C C θθθθ''⎛⎫=+=+=+ ⎪⎝⎭(3.1)其中,()120,90θθ∈︒︒、;又1点与2点之间的距离为定值L ,则可得到:()12=tan tan L H θθ+ (3.2)设LK =H,则12tan tan K θθ+= (3.3) 由三角代换变形得到:()1/2221cos 1tan K θθ-⎡⎤=+-⎣⎦代入(3.1)式得到:()1/2211211111tan cos cos cos H H T K C C θθθθ⎛⎫⎛⎫⎡⎤=+=++-⎣⎦ ⎪ ⎪⎝⎭⎝⎭(3.4) 对上式求一阶导数得到:()()1111/22211sin 2tan cos '2cos 1tan K H T C K θθθθθ⎧⎫+--⎪⎪⎪⎪=⎨⎬⎡⎤+-⎪⎪⎣⎦⎪⎪⎩⎭× (3.5) 因函数时间T 有极小值,令T '=0,整理结果可得下式:1tan 2Kθ= (3.6)此时,将上式代入(3.3)式得到:21tan tan 2Kθθ== (3.7)从而有:12θθ= (3.8) 由(3.8)式可得:入射角等于反射角,即结果成立。
matlab编程实例100例(精编文档).doc

【最新整理,下载后即可编辑】1-32是:图形应用篇33-66是:界面设计篇67-84是:图形处理篇85-100是:数值分析篇实例1:三角函数曲线(1)function shili01h0=figure('toolbar','none',...'position',[198****0300],...'name','实例01');h1=axes('parent',h0,...'visible','off');x=-pi:0.05:pi;y=sin(x);plot(x,y);xlabel('自变量X');ylabel('函数值Y');title('SIN( )函数曲线');grid on实例2:三角函数曲线(2)function shili02h0=figure('toolbar','none',...'position',[200 150 450 350],...'name','实例02');x=-pi:0.05:pi;y=sin(x)+cos(x);plot(x,y,'-*r','linewidth',1);grid onxlabel('自变量X');ylabel('函数值Y');title('三角函数');实例3:图形的叠加function shili03h0=figure('toolbar','none',...'position',[200 150 450 350],...'name','实例03');x=-pi:0.05:pi;y1=sin(x);y2=cos(x);plot(x,y1,...'-*r',...x,y2,...'--og');grid onxlabel('自变量X');ylabel('函数值Y');title('三角函数');实例4:双y轴图形的绘制function shili04h0=figure('toolbar','none',...'position',[200 150 450 250],...'name','实例04');x=0:900;a=1000;b=0.005;y1=2*x;y2=cos(b*x);[haxes,hline1,hline2]=plotyy(x,y1,x,y2,'semilogy','plot'); axes(haxes(1))ylabel('semilog plot');axes(haxes(2))ylabel('linear plot');实例5:单个轴窗口显示多个图形function shili05h0=figure('toolbar','none',...'position',[200 150 450 250],...'name','实例05');t=0:pi/10:2*pi;[x,y]=meshgrid(t);subplot(2,2,1)plot(sin(t),cos(t))axis equalsubplot(2,2,2)z=sin(x)-cos(y);plot(t,z)axis([0 2*pi -2 2])subplot(2,2,3)h=sin(x)+cos(y);plot(t,h)axis([0 2*pi -2 2])subplot(2,2,4)g=(sin(x).^2)-(cos(y).^2);plot(t,g)axis([0 2*pi -1 1])实例6:图形标注function shili06h0=figure('toolbar','none',...'position',[200 150 450 400],...'name','实例06');t=0:pi/10:2*pi;h=plot(t,sin(t));xlabel('t=0到2\pi','fontsize',16);ylabel('sin(t)','fontsize',16);title('\it{从0to2\pi 的正弦曲线}','fontsize',16) x=get(h,'xdata');y=get(h,'ydata');imin=find(min(y)==y);imax=find(max(y)==y);text(x(imin),y(imin),...['\leftarrow最小值=',num2str(y(imin))],...'fontsize',16)text(x(imax),y(imax),...['\leftarrow最大值=',num2str(y(imax))],...'fontsize',16)实例7:条形图形function shili07h0=figure('toolbar','none',...'position',[200 150 450 350],...'name','实例07');tiao1=[562 548 224 545 41 445 745 512];tiao2=[47 48 57 58 54 52 65 48];t=0:7;bar(t,tiao1)xlabel('X轴');ylabel('TIAO1值');h1=gca;h2=axes('position',get(h1,'position'));plot(t,tiao2,'linewidth',3)set(h2,'yaxislocation','right','color','none','xticklabel',[]) 实例8:区域图形function shili08h0=figure('toolbar','none',...'position',[200 150 450 250],...'name','实例08');x=91:95;profits1=[88 75 84 93 77];profits2=[51 64 54 56 68];profits3=[42 54 34 25 24];profits4=[26 38 18 15 4];area(x,profits1,'facecolor',[0.5 0.9 0.6],...'edgecolor','b',...'linewidth',3)hold onarea(x,profits2,'facecolor',[0.9 0.85 0.7],...'edgecolor','y',...'linewidth',3)hold onarea(x,profits3,'facecolor',[0.3 0.6 0.7],...'edgecolor','r',...'linewidth',3)hold onarea(x,profits4,'facecolor',[0.6 0.5 0.9],...'edgecolor','m',...'linewidth',3)hold offset(gca,'xtick',[91:95])set(gca,'layer','top')gtext('\leftarrow第一季度销量') gtext('\leftarrow第二季度销量') gtext('\leftarrow第三季度销量') gtext('\leftarrow第四季度销量') xlabel('年','fontsize',16);ylabel('销售量','fontsize',16);实例9:饼图的绘制function shili09h0=figure('toolbar','none',...'position',[200 150 450 250],...'name','实例09');t=[54 21 35;68 54 35;45 25 12;48 68 45;68 54 69];x=sum(t);h=pie(x);textobjs=findobj(h,'type','text');str1=get(textobjs,{'string'});val1=get(textobjs,{'extent'});oldext=cat(1,val1{:});names={'商品一:';'商品二:';'商品三:'};str2=strcat(names,str1);set(textobjs,{'string'},str2)val2=get(textobjs,{'extent'});newext=cat(1,val2{:});offset=sign(oldext(:,1)).*(newext(:,3)-oldext(:,3))/2; pos=get(textobjs,{'position'});textpos=cat(1,pos{:});textpos(:,1)=textpos(:,1)+offset;set(textobjs,{'position'},num2cell(textpos,[3,2]))实例10:阶梯图function shili10h0=figure('toolbar','none',...'position',[200 150 450 400],...'name','实例10');a=0.01;b=0.5;t=0:10;f=exp(-a*t).*sin(b*t);stairs(t,f)hold onplot(t,f,':*')hold offglabel='函数e^{-(\alpha*t)}sin\beta*t的阶梯图'; gtext(glabel,'fontsize',16)xlabel('t=0:10','fontsize',16)axis([0 10 -1.2 1.2])实例11:枝干图function shili11h0=figure('toolbar','none',...'position',[200 150 450 350],...'name','实例11');x=0:pi/20:2*pi;y1=sin(x);y2=cos(x);h1=stem(x,y1+y2);hold onh2=plot(x,y1,'^r',x,y2,'*g');hold offh3=[h1(1);h2];legend(h3,'y1+y2','y1=sin(x)','y2=cos(x)') xlabel('自变量X');ylabel('函数值Y');title('正弦函数与余弦函数的线性组合'); 实例12:罗盘图function shili12h0=figure('toolbar','none',...'position',[200 150 450 250],...'name','实例12');winddirection=[54 24 65 84256 12 235 62125 324 34 254];windpower=[2 5 5 36 8 12 76 14 10 8];rdirection=winddirection*pi/180;[x,y]=pol2cart(rdirection,windpower); compass(x,y);desc={'风向和风力','北京气象台','10月1日0:00到','10月1日12:00'};gtext(desc)实例13:轮廓图function shili13h0=figure('toolbar','none',...'position',[200 150 450 250],...'name','实例13');[th,r]=meshgrid((0:10:360)*pi/180,0:0.05:1); [x,y]=pol2cart(th,r);z=x+i*y;f=(z.^4-1).^(0.25);contour(x,y,abs(f),20)axis equalxlabel('实部','fontsize',16);ylabel('虚部','fontsize',16);h=polar([0 2*pi],[0 1]);delete(h)hold oncontour(x,y,abs(f),20)实例14:交互式图形function shili14h0=figure('toolbar','none',...'position',[200 150 450 250],...'name','实例14');axis([0 10 0 10]);hold onx=[];y=[];n=0;disp('单击鼠标左键点取需要的点'); disp('单击鼠标右键点取最后一个点'); but=1;while but==1[xi,yi,but]=ginput(1);plot(xi,yi,'bo')n=n+1;disp('单击鼠标左键点取下一个点');x(n,1)=xi;y(n,1)=yi;endt=1:n;ts=1:0.1:n;xs=spline(t,x,ts);ys=spline(t,y,ts);plot(xs,ys,'r-');hold off实例14:交互式图形function shili14h0=figure('toolbar','none',...'position',[200 150 450 250],...'name','实例14');axis([0 10 0 10]);hold onx=[];y=[];n=0;disp('单击鼠标左键点取需要的点'); disp('单击鼠标右键点取最后一个点'); but=1;while but==1[xi,yi,but]=ginput(1);plot(xi,yi,'bo')n=n+1;disp('单击鼠标左键点取下一个点');x(n,1)=xi;y(n,1)=yi;endt=1:n;ts=1:0.1:n;xs=spline(t,x,ts);ys=spline(t,y,ts);plot(xs,ys,'r-');hold off实例15:变换的傅立叶函数曲线function shili15h0=figure('toolbar','none',...'position',[200 150 450 250],...'name','实例15');axis equalm=moviein(20,gcf);set(gca,'nextplot','replacechildren')h=uicontrol('style','slider','position',...[100 10 500 20],'min',1,'max',20)for j=1:20plot(fft(eye(j+16)))set(h,'value',j)m(:,j)=getframe(gcf);endclf;axes('position',[0 0 1 1]);movie(m,30)实例16:劳伦兹非线形方程的无序活动function shili15h0=figure('toolbar','none',...'position',[200 150 450 250],...'name','实例15');axis equalm=moviein(20,gcf);set(gca,'nextplot','replacechildren')h=uicontrol('style','slider','position',...[100 10 500 20],'min',1,'max',20)for j=1:20plot(fft(eye(j+16)))set(h,'value',j)m(:,j)=getframe(gcf);endclf;axes('position',[0 0 1 1]);movie(m,30)实例17:填充图function shili17h0=figure('toolbar','none',...'position',[200 150 450 250],...'name','实例17');t=(1:2:15)*pi/8;x=sin(t);y=cos(t);fill(x,y,'r')axis square offtext(0,0,'STOP',...'color',[1 1 1],...'fontsize',50,...'horizontalalignment','center') 例18:条形图和阶梯形图function shili18h0=figure('toolbar','none',...'position',[200 150 450 250],...'name','实例18');subplot(2,2,1)x=-3:0.2:3;y=exp(-x.*x);bar(x,y)title('2-D Bar Chart')subplot(2,2,2)x=-3:0.2:3;y=exp(-x.*x);bar3(x,y,'r')title('3-D Bar Chart')subplot(2,2,3)x=-3:0.2:3;y=exp(-x.*x);stairs(x,y)title('Stair Chart')subplot(2,2,4)x=-3:0.2:3;y=exp(-x.*x);barh(x,y)title('Horizontal Bar Chart')实例19:三维曲线图function shili19h0=figure('toolbar','none',...'position',[200 150 450 400],...'name','实例19');subplot(2,1,1)x=linspace(0,2*pi);y1=sin(x);y2=cos(x);y3=sin(x)+cos(x);z1=zeros(size(x));z2=0.5*z1;z3=z1;plot3(x,y1,z1,x,y2,z2,x,y3,z3)grid onxlabel('X轴');ylabel('Y轴');zlabel('Z轴');title('Figure1:3-D Plot')subplot(2,1,2)x=linspace(0,2*pi);y1=sin(x);y2=cos(x);y3=sin(x)+cos(x);z1=zeros(size(x));z2=0.5*z1;z3=z1;plot3(x,z1,y1,x,z2,y2,x,z3,y3)grid onxlabel('X轴');ylabel('Y轴');zlabel('Z轴');title('Figure2:3-D Plot')实例20:图形的隐藏属性function shili20h0=figure('toolbar','none',...'position',[200 150 450 300],...'name','实例20');subplot(1,2,1)[x,y,z]=sphere(10);mesh(x,y,z)axis offtitle('Figure1:Opaque')hidden onsubplot(1,2,2)[x,y,z]=sphere(10);mesh(x,y,z)axis offtitle('Figure2:Transparent') hidden off实例21PEAKS函数曲线function shili21h0=figure('toolbar','none',...'position',[200 100 450 450],...'name','实例21');[x,y,z]=peaks(30);subplot(2,1,1)x=x(1,:);y=y(:,1);i=find(y>0.8&y<1.2);j=find(x>-0.6&x<0.5);z(i,j)=nan*z(i,j);surfc(x,y,z)xlabel('X轴');ylabel('Y轴');zlabel('Z轴');title('Figure1:surfc函数形成的曲面') subplot(2,1,2)x=x(1,:);y=y(:,1);i=find(y>0.8&y<1.2);j=find(x>-0.6&x<0.5);z(i,j)=nan*z(i,j);surfl(x,y,z)xlabel('X轴');ylabel('Y轴');zlabel('Z轴');title('Figure2:surfl函数形成的曲面') 实例22:片状图function shili22h0=figure('toolbar','none',...'position',[200 150 550 350],...'name','实例22');subplot(1,2,1)x=rand(1,20);y=rand(1,20);z=peaks(x,y*pi);t=delaunay(x,y);trimesh(t,x,y,z)hidden offtitle('Figure1:Triangular Surface Plot'); subplot(1,2,2)x=rand(1,20);y=rand(1,20);z=peaks(x,y*pi);t=delaunay(x,y);trisurf(t,x,y,z)title('Figure1:Triangular Surface Plot'); 实例23:视角的调整function shili23h0=figure('toolbar','none',...'position',[200 150 450 350],...'name','实例23');x=-5:0.5:5;[x,y]=meshgrid(x);r=sqrt(x.^2+y.^2)+eps;z=sin(r)./r;subplot(2,2,1)surf(x,y,z)xlabel('X-axis')ylabel('Y-axis')zlabel('Z-axis')title('Figure1')view(-37.5,30)subplot(2,2,2)surf(x,y,z)xlabel('X-axis')ylabel('Y-axis')zlabel('Z-axis')title('Figure2')view(-37.5+90,30) subplot(2,2,3)surf(x,y,z)xlabel('X-axis')ylabel('Y-axis')zlabel('Z-axis')title('Figure3')view(-37.5,60)subplot(2,2,4)surf(x,y,z)xlabel('X-axis')ylabel('Y-axis')zlabel('Z-axis')title('Figure4')view(180,0)实例24:向量场的绘制function shili24h0=figure('toolbar','none',...'position',[200 150 450 350],...'name','实例24');subplot(2,2,1)z=peaks;ribbon(z)title('Figure1')subplot(2,2,2)[x,y,z]=peaks(15);[dx,dy]=gradient(z,0.5,0.5); contour(x,y,z,10)hold onquiver(x,y,dx,dy)hold offtitle('Figure2')subplot(2,2,3)[x,y,z]=peaks(15);[nx,ny,nz]=surfnorm(x,y,z);surf(x,y,z)hold onquiver3(x,y,z,nx,ny,nz)hold offtitle('Figure3')subplot(2,2,4)x=rand(3,5);y=rand(3,5);z=rand(3,5);c=rand(3,5);fill3(x,y,z,c)grid ontitle('Figure4')实例25:灯光定位function shili25h0=figure('toolbar','none',...'position',[200 150 450 250],...'name','实例25');vert=[1 1 1;1 2 1;2 2 1;2 1 1;1 1 2;12 2;2 2 2;2 1 2];fac=[1 2 3 4;2 6 7 3;4 3 7 8;15 8 4;1 2 6 5;5 6 7 8];grid offsphere(36)h=findobj('type','surface');set(h,'facelighting','phong',...'facecolor',...'interp',...'edgecolor',[0.4 0.4 0.4],...'backfacelighting',...'lit')hold onpatch('faces',fac,'vertices',vert,...'facecolor','y');light('position',[1 3 2]);light('position',[-3 -1 3]);material shinyaxis vis3d offhold off实例26:柱状图function shili26h0=figure('toolbar','none',...'position',[200 50 450 450],...'name','实例26'); subplot(2,1,1)x=[5 2 18 7 39 8 65 5 54 3 2];bar(x)xlabel('X轴');ylabel('Y轴');title('第一子图');subplot(2,1,2)y=[5 2 18 7 39 8 65 5 54 3 2];barh(y)xlabel('X轴');ylabel('Y轴');title('第二子图');实例27:设置照明方式function shili27h0=figure('toolbar','none',...'position',[200 150 450 350],...'name','实例27');subplot(2,2,1)sphereshading flatcamlight leftcamlight rightlighting flatcolorbaraxis offtitle('Figure1')subplot(2,2,2)sphereshading flatcamlight leftcamlight rightlighting gouraudcolorbaraxis offtitle('Figure2')subplot(2,2,3)sphereshading interpcamlight rightcamlight leftlighting phongaxis offtitle('Figure3')subplot(2,2,4)sphereshading flatcamlight leftcamlight rightlighting nonecolorbaraxis offtitle('Figure4')实例28:羽状图function shili28h0=figure('toolbar','none',...'position',[200 150 450 350],...'name','实例28');subplot(2,1,1)alpha=90:-10:0;r=ones(size(alpha));m=alpha*pi/180;n=r*10;[u,v]=pol2cart(m,n);feather(u,v)title('羽状图')axis([0 20 0 10])subplot(2,1,2)t=0:0.5:10;y=exp(-x*t);feather(y)title('复数矩阵的羽状图')实例29:立体透视(1)function shili29h0=figure('toolbar','none',...'position',[200 150 450 250],...'name','实例29');[x,y,z]=meshgrid(-2:0.1:2,...-2:0.1:2,...-2:0.1:2);v=x.*exp(-x.^2-y.^2-z.^2);grid onfor i=-2:0.5:2;h1=surf(linspace(-2,2,20),...linspace(-2,2,20),...zeros(20)+i);rotate(h1,[1 -1 1],30)dx=get(h1,'xdata');dy=get(h1,'ydata');dz=get(h1,'zdata');delete(h1)slice(x,y,z,v,[-2 2],2,-2)hold onslice(x,y,z,v,dx,dy,dz)hold offaxis tightview(-5,10)drawnowend实例30:立体透视(2)function shili30h0=figure('toolbar','none',...'position',[200 150 450 250],...'name','实例30');[x,y,z]=meshgrid(-2:0.1:2,...-2:0.1:2,...-2:0.1:2);v=x.*exp(-x.^2-y.^2-z.^2); [dx,dy,dz]=cylinder;slice(x,y,z,v,[-2 2],2,-2)for i=-2:0.2:2h=surface(dx+i,dy,dz);rotate(h,[1 0 0],90)xp=get(h,'xdata');yp=get(h,'ydata');zp=get(h,'zdata');delete(h)hold onhs=slice(x,y,z,v,xp,yp,zp);axis tightxlim([-3 3])view(-10,35)drawnowdelete(hs)hold offend实例31:表面图形function shili31h0=figure('toolbar','none',...'position',[200 150 550 250],...'name','实例31');subplot(1,2,1)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),33); ylin=linspace(min(y),max(y),33); [X,Y]=meshgrid(xlin,ylin);Z=griddata(x,y,z,X,Y,'cubic'); mesh(X,Y,Z)axis tighthold onplot3(x,y,z,'.','Markersize',20) subplot(1,2,2)k=5;n=2^k-1;theta=pi*(-n:2:n)/n;phi=(pi/2)*(-n:2:n)'/n;X=cos(phi)*cos(theta);Y=cos(phi)*sin(theta);Z=sin(phi)*ones(size(theta)); colormap([0 0 0;1 1 1])C=hadamard(2^k);surf(X,Y,Z,C)axis square实例32:沿曲线移动的小球h0=figure('toolbar','none',...'position',[198****8468],...'name','实例32');h1=axes('parent',h0,...'position',[0.15 0.45 0.7 0.5],...'visible','on');t=0:pi/24:4*pi;y=sin(t);plot(t,y,'b')n=length(t);h=line('color',[0 0.5 0.5],...'linestyle','.',...'markersize',25,...'erasemode','xor');k1=uicontrol('parent',h0,...'style','pushbutton',...'position',[80 100 50 30],...'string','开始',...'callback',[...'i=1;',...'k=1;,',...'m=0;,',...'while 1,',...'if k==0,',...'break,',...'end,',...'if k~=0,',...'set(h,''xdata'',t(i),''ydata'',y(i)),',...'drawnow;,',...'i=i+1;,',...'if i>n,',...'m=m+1;,',...'i=1;,',...'end,',...'end,',...'end']);k2=uicontrol('parent',h0,...'style','pushbutton',...'position',[180 100 50 30],...'string','停止',...'callback',[...'k=0;,',...'set(e1,''string'',m),',...'p=get(h,''xdata'');,',...'q=get(h,''ydata'');,',...'set(e2,''string'',p);,',...'set(e3,''string'',q)']); k3=uicontrol('parent',h0,...'style','pushbutton',...'position',[280 100 50 30],...'string','关闭',...'callback','close');e1=uicontrol('parent',h0,...'style','edit',...'position',[60 30 60 20]);t1=uicontrol('parent',h0,...'style','text',...'string','循环次数',...'position',[60 50 60 20]);e2=uicontrol('parent',h0,...'style','edit',...'position',[180 30 50 20]);t2=uicontrol('parent',h0,...'style','text',...'string','终点的X坐标值',...'position',[155 50 100 20]);e3=uicontrol('parent',h0,...'style','edit',...'position',[300 30 50 20]);t3=uicontrol('parent',h0,...'style','text',...'string','终点的Y坐标值',...'position',[275 50 100 20]);实例33:曲线转换按钮h0=figure('toolbar','none',...'position',[200 150 450 250],...'name','实例33');x=0:0.5:2*pi;y=sin(x);h=plot(x,y);grid onhuidiao=[...'if i==1,',...'i=0;,',...'y=cos(x);,',...'delete(h),',...'set(hm,''string'',''正弦函数''),',...'h=plot(x,y);,',...'grid on,',...'else if i==0,',...'i=1;,',...'y=sin(x);,',...'set(hm,''string'',''余弦函数''),',...'delete(h),',...'h=plot(x,y);,',...'grid on,',...'end,',...'end'];hm=uicontrol(gcf,'style','pushbutton',...'string','余弦函数',...'callback',huidiao);i=1;set(hm,'position',[250 20 60 20]);set(gca,'position',[0.2 0.2 0.6 0.6])title('按钮的使用')hold on实例34:栅格控制按钮h0=figure('toolbar','none',...'position',[200 150 450 250],...'name','实例34');x=0:0.5:2*pi;y=sin(x);plot(x,y)huidiao1=[...'set(h_toggle2,''value'',0),',...'grid on,',...];huidiao2=[...'set(h_toggle1,''value'',0),',...'grid off,',...];h_toggle1=uicontrol(gcf,'style','togglebutton',...'string','grid on',...'value',0,...'position',[20 45 50 20],...'callback',huidiao1);h_toggle2=uicontrol(gcf,'style','togglebutton',...'string','grid off',...'value',0,...'position',[20 20 50 20],...'callback',huidiao2);set(gca,'position',[0.2 0.2 0.6 0.6])title('开关按钮的使用')实例35:编辑框的使用h0=figure('toolbar','none',...'position',[200 150 350 250],...'name','实例35');f='Please input the letter';huidiao1=[...'g=upper(f);,',...'set(h2_edit,''string'',g),',...];huidiao2=[...'g=lower(f);,',...'set(h2_edit,''string'',g),',...];h1_edit=uicontrol(gcf,'style','edit',...'position',[100 200 100 50],...'HorizontalAlignment','left',...'string','Please input the letter',...'callback','f=get(h1_edit,''string'');',...'background','w',...'max',5,...'min',1);h2_edit=uicontrol(gcf,'style','edit',...'HorizontalAlignment','left',...'position',[100 100 100 50],...'background','w',...'max',5,...'min',1);h1_button=uicontrol(gcf,'style','pushbutton',...'string','小写变大写',...'position',[100 45 100 20],...'callback',huidiao1);h2_button=uicontrol(gcf,'style','pushbutton',...'string','大写变小写',...'position',[100 20 100 20],...'callback',huidiao2);实例36:弹出式菜单h0=figure('toolbar','none',...'position',[200 150 450 250],...'name','实例36');x=0:0.5:2*pi;y=sin(x);h=plot(x,y);grid onhm=uicontrol(gcf,'style','popupmenu',...'string',...'sin(x)|cos(x)|sin(x)+cos(x)|exp(-sin(x))',...'position',[250 20 50 20]);set(hm,'value',1)huidiao=[...'v=get(hm,''value'');,',...'switch v,',...'case 1,',...'delete(h),',...'y=sin(x);,',...'h=plot(x,y);,',...'grid on,',...'case 2,',...'delete(h),',...'y=cos(x);,',...'h=plot(x,y);,',...'grid on,',...'case 3,',...'delete(h),',...'y=sin(x)+cos(x);,',...'h=plot(x,y);,',...'grid on,',...'case 4,',...'delete(h),',...'y=exp(-sin(x));,',...'h=plot(x,y);,',...'grid on,',...'end'];set(hm,'callback',huidiao)set(gca,'position',[0.2 0.2 0.6 0.6]) title('弹出式菜单的使用')实例37:滑标的使用h0=figure('toolbar','none',...'position',[200 150 450 250],...'name','实例37');[x,y]=meshgrid(-8:0.5:8);r=sqrt(x.^2+y.^2)+eps;z=sin(r)./r;h0=mesh(x,y,z);h1=axes('position',...[0.2 0.2 0.5 0.5],...'visible','off');htext=uicontrol(gcf,...'units','points',...'position',[20 30 45 15],...'string','brightness',...'style','text');hslider=uicontrol(gcf,...'units','points',...'position',[10 10 300 15],...'min',-1,...'max',1,...'style','slider',...'callback',...'brighten(get(hslider,''value''))'); 实例38:多选菜单h0=figure('toolbar','none',...'position',[200 150 450 250],...'name','实例38');[x,y]=meshgrid(-8:0.5:8);r=sqrt(x.^2+y.^2)+eps;z=sin(r)./r;h0=mesh(x,y,z);hlist=uicontrol(gcf,'style','listbox',...'string','default|spring|summer|autumn|winter',...'max',5,...'min',1,...'position',[20 20 80 100],...'callback',[...'k=get(hlist,''value'');,',...'switch k,',...'case 1,',...'colormap default,',...'case 2,',...'colormap spring,',...'case 3,',...'colormap summer,',...'case 4,',...'colormap autumn,',...'case 5,',...'colormap winter,',...'end']);实例39:菜单控制的使用h0=figure('toolbar','none',...'position',[200 150 450 250],...'name','实例39');x=0:0.5:2*pi;y=cos(x);h=plot(x,y);grid onset(gcf,'toolbar','none')hm=uimenu('label','example');huidiao1=[...'set(hm_gridon,''checked'',''on''),',...'set(hm_gridoff,''checked'',''off''),',...'grid on'];huidiao2=[...'set(hm_gridoff,''checked'',''on''),',...'set(hm_gridon,''checked'',''off''),',...'grid off'];hm_gridon=uimenu(hm,'label','grid on',...'checked','on',...'callback',huidiao1);hm_gridoff=uimenu(hm,'label','grid off',...'checked','off',...'callback',huidiao2);实例40:UIMENU菜单的应用h0=figure('toolbar','none',...'position',[200 150 450 250],...'name','实例40');h1=uimenu(gcf,'label','函数');h11=uimenu(h1,'label','轮廓图',...'callback',[...'set(h31,''checked'',''on''),',...'set(h32,''checked'',''off''),',...'[x,y,z]=peaks;,',...'contour3(x,y,z,30)']);h12=uimenu(h1,'label','高斯分布',...'callback',[...'set(h31,''checked'',''on''),',...'set(h32,''checked'',''off''),',...'mesh(peaks);,',...'axis tight']);。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
()
**y;
在命令窗口中输入:
1;
2;
(1,2)
5.1.3 数据的输入输出指令
函数 函数 函数
函数
调用格式为: (‘提示信息’,选项);
其中提示信息为一个字符串,用于提示用户输入什么样的数据。 如果在函数调用时采用's'选项,则允许用户输入一个字符串。例如,想输入一个人 的姓名,可采用命令: (' ?','s')
语句的后继语句。
例 计算分段函数值
程序如下:
('请输入x的值:');
10
(1)(x*1);
*((x));
y
3.多分支语句
多分支语句格式为:
条件1
语句组1
条件2Biblioteka 语句组2……条件m
语句组m
语句组1
3.多分支语句
例5.2 输入一个字符,若为大写字母,则输出其后继字符,若为小写字母,则输出其前 导字符,若为数字字符则输出其对应的数值,若为其他字符则原样输出。
2 函数文件
(1) 函数文件的基本结构 函数文件由语句引导 其基本结构为:
输出形参表=函数名(输入形参表) %注释说明部分
函数体语句
(1) 函数文件的基本结构
函数文件的格式说明 (1)关于函数文件名: 函数文件名与函数名也可以不相同(一般设为相同!)。当两者不
同时,将忽略函数名而确认函数文件名,因此调用时使用函数文件名。 (2)关于注释说明部分。注释说明包括三部分内容:①紧随函数文件引导行之后以%开头
M文件的基本结构
函数定义行
H1行 对程序的总体介绍
函数说明 对程序详细描述
程序主体
注释 解释程序功能的文字
说明:除程序主体外,其他部分以%开头。
P116 实例
5.1.2 脚本文件和函数文件
1 脚本文件 没有输入和输出 由一系列指令组成 可在命令窗口直接运行 产生的所有变量存储在中。 例 5_1。
;
1:10; [11,12,13,14;15,16,17,18];
;
a
b
然后在的命令窗口中输入,将会执行该命令文件。
M文件的建立与编辑
1.建立新的M文件 (1)菜单操作:命令窗口的菜单 → 菜单项 → 命令。 (2)命令操作:在命令窗口输入命令。 (3)命令按钮操作:单击命令窗口工具栏上的“新建”命令按钮。 2. 编辑已有的M文件 3. M文件的分类 P116 4.1.2内容 分类:脚本文件( )和函数文件( )。 主要区别。
MATLAB程序设计及应用实例
1
5.1 程序设计
5.1.1 M文件 5.1.2 脚本文件和函数文件 5.1.5 数据的输入输出 5.1.3 选择结构 5.1.4 循环结构 5.1.6 M文件调试
5.1.1 M文件
例 建立一个命令文件将变量的值互换,然后运行该命令文件。
首先建立命令文件并以文件名存盘:
语句 在中,语句有3种格式。 语句 语句
1.单分支语句
语句格式为:
条件
语句组
当条件成立时,则执行语句组,执行完之后继续执行语句的后继语句,若条件不成立,
则直接执行语句的后继语句
2.双分支语句
双分支语句格式为:
条件
语句组1
语句组2
当条件成立时,执行语句组1,否则执行语句组2,语句组1或语句组2执行后,再执行
函数
调用格式为
(输出项)
其中输出项既可以为字符串,也可以为矩阵。
注意:用函数显示矩阵时将不显示矩阵的名字,而且其格式更紧密,且不留任何没有
意义的空行。
函数
其调用格式为:
(延迟秒数)
如果省略延迟时间,直接使用,则将暂停程序,直到用户按任一键后程序继续执行。
若要强行中止程序的运行可使用命令。
5.1.4 选择结构- 语句
程序如下:
('请输入一个字符','s');
c>='A' & c<='Z'
(((c)+1));
c>='a'& c<='z'
(((c)-1));
c>='0'& c<='9'
((c)('0'));
(c);
5.1.4 选择结构- 语句
语句
其语句格式为:
表达式
值1
语句组1
值2
语句组2
……
值m
语句组m
语句组1
5.1.4 选择结构- 语句
例 某商场对顾客所购买的商品实行打折销售,已知打折标准,求所售商品的实际销售价格
程序如下:
('请输入商品价格');
(100)
{0,1}
0;
{2,3,4}
3/100;
2(5:9)
5/100;
2(10:24)
8/100;
2(25:49)
10/100;
14/100;
*(1)
的第一注释行。②第一注释行及之后连续的注释行。③与在线帮助文本相隔一空行的注 释行。
(2)函数文件的调用
函数调用的一般格式:
[输出实参表]=函数名(输入实参表)
注意:等号左边是方括号,右边输入参数用括号
例5.1 编写函数文件求半径为r的圆的面积和周长
[](r) ar 圆半径 圆面积 圆周长
*r*r; 2**r; 以上函数文件以文件名存入c:\7\\下,然后在命令窗口调用该函数: [](10)
(2)函数文件的调用
函数文件:
()
1
;
2
;
3
(a*b*c)/2;
命令文件5_2:
[1:3][1;2;3];
(x)
(')
(,3)
(3)全局变量和局部变量
全局变量用命令定义。函数文件的内部变量是局部的,与其他函数文件及工作空间 相互隔离
例 全局变量应用示例。
先建立函数文件,该函数将输入的参数加权相加。
(2)函数文件的调用
函数的递归调用
例:利用递归调用函数文件:
(n)
n<=1
1;
(1)*n;
在命令文件5_1中调用函数文件求12345!。
(2)函数文件的调用
函数所传递参数的可调性 在调用函数时,用两个永久变量和分别记录调用该函数时的输入实参和输出实参的个数。
只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出 参数个数,从而决定函数如何进行处理 例:用法示例
程序如下:5_3 [1,2,3;4,5,6]; [7,8,9;10,11,12];
*B;
.*B;
C
%显示出错原因
5.1.5 循环结构
5.1.4 选择结构语句
语句格式为:
语句组1
语句组2
语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信 息赋给保留的变量,并转去执行语句组2。这种试探性执行语句是其他高级语 言所没有的。
5.1.4 选择结构语句
例 矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错,则 自动转去求两矩阵的点乘