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使用方法和程序设计一、实验目的1、掌握Matlab软件使用的基本方法;2、熟悉Matlab的数据表示、基本运算和程序控制语句3、熟悉Matlab绘图命令及基本绘图控制4、熟悉Matlab程序设计的基本方法二、实验内容:1、帮助命令使用help命令,查找 sqrt(开方)函数的使用方法;答:点击菜单栏help,选择product help选项,在search for栏输入‘sqrt’,点击go,可得到sqrt(开方)函数的使用方法.2、矩阵运算(1)矩阵的乘法已知A=[1 2;3 4]; B=[5 5;7 8];求A^2*B>> A=[1 2;3 4]; B=[5 5;7 8];C=A^2*BC =105 115229 251(2)矩阵除法已知 A=[1 2 3;4 5 6;7 8 9];B=[1 0 0;0 2 0;0 0 3];A\B,A/B>> A=[1 2 3;4 5 6;7 8 9];B=[1 0 0;0 2 0;0 0 3];C=A\B,D=A/BWarning: Matrix is close to singular or badly scaled.Results may be inaccurate. RCOND = 1.541976e-018.C =1.0e+016 *-0.4504 1.8014 -1.35110.9007 -3.6029 2.7022-0.4504 1.8014 -1.3511D =1.0000 1.0000 1.00004.0000 2.5000 2.00007.0000 4.0000 3.0000(3)矩阵的转置及共轭转置已知A=[5+i,2-i,1;6*i,4,9-i];求A.', A'>> A=[5+i,2-i,1;6*i,4,9-i];>> B=A.', C=A'B =5.0000 + 1.0000i 0 +6.0000i2.0000 - 1.0000i 4.00001.0000 9.0000 - 1.0000iC =5.0000 - 1.0000i 0 -6.0000i2.0000 + 1.0000i 4.00001.0000 9.0000 + 1.0000i(4)使用冒号表达式选出指定元素 P22已知: A=[1 2 3;4 5 6;7 8 9];求A中第3列前2个元素;A中所有列第2,3行的元素;>> A=[1 2 3;4 5 6;7 8 9];B1=A([1,2],[3])B2=A([2,3],:)B1 =36B2 =4 5 67 8 9方括号[]用magic函数生成一个4阶魔术矩阵,删除该矩阵的第四列>> A=magic(4)B=A(:,[1,2,3])A =16 2 3 135 11 10 89 7 6 124 14 15 1B =16 2 35 11 109 7 64 14 153、多项式(1)求多项式4=xxp的根x-(3-2)>> Y=[1 0 -2 -4];S=roots(Y)S =2.0000-1.0000 + 1.0000i-1.0000 - 1.0000i(2)已知A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4] ,求矩阵A的特征多项式;把矩阵A作为未知数代入到多项式中;>> A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4]P=poly(A)polyval(P,A)A =1.2000 3.0000 5.0000 0.90005.0000 1.7000 5.00006.00003.0000 9.0000 0 1.00001.00002.00003.00004.0000P =1.0000 -6.9000 -77.2600 -86.1300 604.5500 ans =1.0e+003 *0.3801 -0.4545 -1.9951 0.4601-1.9951 0.2093 -1.9951 -2.8880-0.4545 -4.8978 0.6046 0.43530.4353 0.0841 -0.4545 -1.16174、基本绘图命令(1)绘制余弦曲线 y=cos(t),t∈[0,2π] >> t=[0:0.05:2*pi];>> y=cos(t)plot(t,y)(2)在同一坐标系中绘制余弦曲线y=cos(t-0.25)和正弦曲线y=sin(t-0.5),t ∈[0,2π]>> t=[0:0.05:2*pi];y1=cos(t-0.25);y2=sin(t-0.5);plot(t,y1)hold onplot(t,y2)5、基本绘图控制 P40绘制[0,4π]区间上的x1=10sint曲线,并要求:(1)线形为点划线、颜色为红色、数据点标记为加号;(2)坐标轴控制:显示范围、刻度线、比例、网络线(3)标注控制:坐标轴名称、标题、相应文本;>> syms x1;>> x1=10*sin(t);>> t=[0:0.1:4*pi];>> plot(t,x1,'r-.+'); %画图,显示红色、点划线、标记加号;axis([0,15,-10,10]); %定义显示范围,横轴为[0,15],纵轴为[-10,10];title('曲线x1=10sint'); %显示标题;xlabel('T轴');ylabel('X1轴'); %显示坐标轴名称;set(gca,'xminortick','on');set(gca,'yminortick','on'); %显示刻度线;grid on %显示网络线6、基本程序设计(1)编写命令文件:计算1+2+…+n<2000 时的最大n值;(P32例题)(1)>> sum=0;for m=1:2000;if (sum>2000),break;endsum=sum+m;endsum=sum-m,m=m-1sum =1952m =63(2)编写函数文件:分别用for和while循环结构编写程序,求2的0到n次幂的和。
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求解编程
NIND=200;MAXGEN=2000;NV AR=55;max=5000000;P=0.3;M=3;N=5;L=7;A=[313000000 378000000 465000000] ;M=[20000 10000 30000 40000 40000] ;D=[165 150 200 100 150 300 200] ;f=[6000000;4000000;6000000;700000;5000000] ;V=[80;80;90;955;100] ;a=[15;20;24;20;15;20;20;15;20;24;20;15;24;20;15] ;C=[20;15;15;20;15;20;15;20;25;20;25;15;15;15;15;15;15;20;20;25;20;30;20;20;20;20;25;20;20;1 5;15;15;20;20;20;20] ;P=3;for i=l:NINDwhile 0<1for j=1:5chroml(i,j)=round(rand(i)) ;endif(sum(chroml(i,:),3)>=1)&(sum(chroml(i,:) ,3)<=P)breakendendendsumb=zeros(NIND,5) ;sumd=zeros(NIND,5);for i=l:NINDfor j=l:5if chrom1(i,j)=0chrom3(i,(2*(j-1)+1):(3*j))=0;chrom3(i, (7*(j-l)+1):(8*j))=0;elsewhile chroml(i,j)=l chrom3(i,(3*(j-1)+1):(3*j)=rand(i,3).* min(A[M(j)M(j)]);sumb(i,j)=sum(chrom3(i,(3*(j-l)+1):(3*j)),3);chrom3(j,(7*(j-1)+1):(7*j))=rand(1,7).*(rep([M(j)],[11]));sumd(i,j)=sum(chrom3(i,(7*(j-l)+1):(7*j)),3);chrom3(i,(7*(j-l)+1):(7*j))=(sumb(i,j)/sumd(i,j))*chrom3(i,(7*(j-l)+1):(7*j));if sumb(i,j)<=1.0*M(j)breakendendendendendchrom=[chroml chrorn2 chrom3];%产生初始种群[objvalue]=calobjvaluc(chrom,M,N,L,A,C, V,f);[fitvalue,restriction]=calfitvalue(objvalue,chrom,max,M,N,L,A,M,D,P); [bestindividual,bestfit,bestrestriction,nopos]=best(chrom,fitvalue,restriction);gem=0;while gen<MAXGEN,[objvalue]=calobjvalue(chrom,M,N,L,A,C,V,D);[fitvalue,restriction]=calfitvalue(objvalue,chrom,max,M,N,L,A,M,D,P); [bestindividuall,bestfitl,bestrestrictionl,noposl]=best(chrom,fitvalue,restriction);if bestrestriction>bestrestrictionlbestindividual=bestindividual l;besttit=-bestfitl;bestrestriction=bestrestriction l;endif bestrestriction =bestrcstrictionl)&(bestfit<bestfitl)bestindividual=beStindividual l;besttit=-bestfitl;bestrestriction=bestrestrictionl:endchrom(noposl,:)=bestindividual;[newchrom]=selection(chrom,fitvalue);[newchrom]=crossover(newchrom,M,N,1);[newchrom]=mutation(newchrom,P,M,N,1);[bestindividual2,bestfit2,bestrestrietion2,nopos2]=best(newchrom,fitvalue, restrietion); If bestrestriction>bestrestriction2bestindividual=bestindividual2;bestfit=bestfit2;bestrestriction=bestrestriction2;endif(bestrestriction=bestrestriction2)&(bestfit<bestfit2)bestindividual=bestindividual2;bestfit =-bestfit2;bestrestriction =bestrestriction2;endchrom=newchrom;gen=gen+1;endbestindividual,bestfit,bestrestriction%目标函数Function[objvalue]=ealobjvalue(chrom,M,N,L,A, V,f)Chrom1= chrom(:,1:N);Chrom2=chrom(:,(N+1):(N+M*N));chrom3= chrom (:,(N+M*N+1):(N+M*N+N*L));[NIND,NV AR]=size(chrom);for i=l:NINDfor j=l:Nu(i,j)=7300*sum(chrom2(i,(2*(j-l)+1):(2*j)),2);endendobjvalue=chrom2*a*7300+chrom3*c*3650+sqrt(u).* chroml*V+chroml*f; %适应度计算和约束判断Function[fitvalue restrection]=ealfitvalue(objvalue,chrom, max,M,N,l,A,M,D,P)Global gen;[NIND,NV AR]=size(chrom);Chroml=chrom (:,1:N);chrom2=Chrom(:,(N+1):(N+M*n));chrom3=Chrom(:,(N+M*N*N+1):(N+M*N+N*1));restriction=zeros(NIND,1);r=zeros(NIND,M);s=zeros(NIND,N);t=zeros(NIND,1);u=zeros(NIND,3);p=zeros(NIND,n);for i=l:NINDfor j=l:Mr(i,j)=A(j)-sum((chrom2(i,j:m:m*}n)),2);if r(i,j)<0restriction(i,1)=restriction(i,1)+1;endendfor j=l:lt(i,j)=sum((chrom3(i,j:l:n*1)),2)-D(j);if t(i,j)<0restriction(i,1)=-restriction(i,l)+1;endendfor j=l:ns(i,j)=chroml(i,j)*M(j)-sum(chrom2(i,(M*(j-1)+1):(M*j)),2);p(i,j)=abs(sum(chrom3(i,(1*(j-1)+1):(1*j)),2)-sum(chrom2(i,(M*(j-1)+1):(M*j)),2));if s(i,j)<0restrietion(i,1)=restriction(i,1)+l;endif p(i,j)>=l e-3restriction(i,1)=restriction(i,l)+l;endendu(i,1)=P-sum(chroml(i,:),2);if u(i,1)<0restriction(i,1)=restriction(i,l)+1;endu(i,2)=sum(chroml(i,:),2)-1;if u(i,2)<0restrigtion(i,1)=restriction(i,1)+l;endif(objvalue(i,1)<max)fitvaluc(i,1)=max-objvaluc(i,1);elsefitvalue(i,1)=0.0;endend%找出最优个体和最差个体function[bestindividual,bestfit,bestrestriction,nopos]=best(chrom,fitvalue,restriction); [NIND,NV AR]=size(chrom);pos=l;for i=l:NINDif restriction(pos,1)>restriction(i,1)pos=i;endif(restriction(pos,1)=restriction(i,1))&(fitvalue(pos,1)<fitvalue(i,1)) pos=i;endendbestindividual=chrom(pos,:);bestfit=fitvalue(pos);bestrestriction= restriction (pos,:);nopos=1;for i=l:NINDif restriction(nopos,1)<restriction(i,1)nopos=i;endif(restriction(nopos,1)=restriction(i,1))&(fitvalue(nopos,1)>fitvalue(i,1)) nopos=i;endend%选择Function[newchrom]=selection(chrom,fitvalue)totalfit=sum(fitvalue);fitvalue=:fitvalue/totalfit;fitvalue=cumsum(fitvalue);[NIND,NV AR]=size(chrom);ms=sort(rand(NIND,1));fitin=1;newin=1;while newin<=NINDif(ms(newin))<fitvalue(fitin)temp(newin,:)=chrom(fitin,:);newin=newin+1;elsefitin=fitin+1;endif fitin>=NINDfitin=NIND;endendnewchrom=temp;%交叉Function[newchrom]=crossover(chrom,M,N,1)global gen;[NIND,SVAR]=size(chrom);chrom1=chrom(:,l:n);chrom2=chrom(:, (N+1) : (N+M*N)) ;chrom3=chrom(:, (N+m*n+1) : (N+M*N+N*1)) ; newchrom=zeros(NIND,NV AR) ;P=0.75;for i=l:2:NIND-1if(rand<P)point=ceil(rand*(N-1));ifpoint<5newchrom(i,:)=[chroml(i,l:point)chromI(i+1,point+1:n) ... chrom2(i,l:M*point)chrom2(i+l,M*point+1:M*N) ... chrom3(i,1:l*point)chrom3(i+l,1*point+l:N*1)]; newchrom(i+l,:)=[chroml(i+l,1:point)chroml(i,point+l:n) ... chrom2(i+l,l:m*point)chrom2(i,M*point+l:M*N) ...chrom3(i+1,1:l*point)chrom3(i,1*point+l:N*1)];elsenewchrom(i,:)=chrom(i,:);newchrom(i+1,:)=chrom(i+l,:);endelsenewchrom(i,:)=chromo,:);newchrom(i+l,:)=chrom(i+l,:);endend%变异Function[newchrom]=mutation(chrom,P,M,N,L)global gen;FieldDR=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;20000 20000 10000 10000 30000 30000 40000 40000 40000 40000];RANGE=[0 0 0 0 0 0 0;165 150 200 100 150 300 200];[NIND,NV AR]=size(chrom);chroml=chrom(:,l:N);chrom2=chrom(:, (N+1):(N+M*N));chrom3=chrom(:, (N+M*N+1):(N+M*n+ 1));newchrom=zeros(NIND,NV AR);newchroml=zeros(NIND,N);newchrom2=zeros(NIND,M*N);newchrom3=zeros(NIND,N*1);for i=1:NINDfor j=l:Nif chrom l(i,j)=0newchrom2(i,(M*(j-1)+1):(M*j))=0;newchrom3(i,1*(j-l)+1):(1*j)=0;elseif round(rand)=0newchrom2(i,(M*(j-1)+1):(M*j))=chrom2(i,(M*(j-1)+1):(M*j)+ ...(FieldDR(2,(M*(j-1)+1):(M*j))=chrom2(i,(M*(j-1)+1):(M*j)))*(1-rand^((1-gen/2000)^10));newchrom3(i,(1*(j-1)+1):(1*j)=chrom3(i,(1*(j-1)+1):(1*j) + ...([165 150 200 100 150 300 200]-chrom3(i,(1*(j-1)+1):(1*j)))*(1-rand^((1*gen/2000)^10));elseif round(rand)=lnewChrom2(i,(M*(j-1)+1):(M*j) ) = Chrom2 (i,(M*(j-1)+1):(M*j)) ...(chrom2(i,(M*(j-1)+1):(M*j))-[00])*(1-rand^((1-gen/2000)^10));newchrom3(i,(1*(j-1)+1):(1*j)):chrom3(i,(1*(j-1)+1):(1*j)) ...(chrom3(i,(1*(j-1)+1):(N))-[0 0 0 0 0 0 0 0])*(1-rand^((1*gen/2000)^10));endendendendnewchrom1=chrom1;newchrom=[newchrom1 newchrom2 newchrom3];endendnewchrom1=chrom1;newchrom=[newchrom1 newchrom2 newchrom3];bestindividualbestindividual=columms 1 through 171.0000 1.0000 0 0 1.000 80.3686 20.6636 0 0 23.7458 50.7648 63.57695 0 0 123.6753 39.7648 19.5769 0 0 289.6753 columms 18 through 3419.5849 50.7648 45.7985 64.2875 19.9768 53.6843 135.6752 32.6437 24.5342 27.9485 9.9873 24.7638 125.7958 27.8745 columms 35 through 510 0 0 0 0 0 00 0 0 0 0 0 0columms 52 through 5595.7482 35.9862 83.4768 28.4769 74.5867 113.4786 44.4873。
Matlab技术工程应用实例
Matlab技术工程应用实例引言:在当今信息化社会,工程技术的发展与应用已经成为推动社会进步和经济发展的重要支撑。
计算机技术的迅速发展使得在工程技术应用中,大量的数据处理、模拟和分析都可以通过计算机软件进行。
Matlab作为一种重要的工程软件工具,被广泛应用于各个领域中。
本文将介绍一些Matlab在工程技术中的应用实例,包括信号处理、图像处理、控制系统等多个方面,以展示Matlab在实际工程问题中的重要作用。
一、信号处理应用实例:信号处理是工程技术中的一个重要方向,涉及音频、图像、视频等多个领域的数据处理。
Matlab提供了丰富的信号处理工具包,广泛应用于音频分析、滤波等任务中。
例如,在音频处理中,可以通过Matlab实现音频的混响效果,通过模拟不同的房间声音,使得音频更加丰富和逼真。
此外,Matlab还可以实现音频频谱分析,用于音频的特征提取和音乐指纹识别等任务。
二、图像处理应用实例:图像处理是工程技术中另一个重要方向,主要涉及图像的增强、分割、识别和压缩等任务。
Matlab提供了强大的图像处理工具包,用于图像的滤波、变换和编码等任务。
例如,在医学图像处理中,可以通过Matlab实现磨皮效果,并提取出肿瘤区域进行更精确的诊断。
此外,Matlab还可以实现图像的人脸识别,用于安防系统和人脸解锁等应用。
三、控制系统设计实例:控制系统设计是工程技术中的一个重要方向,主要涉及自动控制和系统优化等任务。
Matlab提供了丰富的控制系统工具包,用于控制系统的建模、仿真和优化等任务。
例如,在电力系统中,可以通过Matlab实现电压的自动调节和负载的平衡,提高系统的稳定性和可靠性。
此外,Matlab还可以实现机器人的路径规划和控制,用于自动化生产线和无人驾驶等应用。
四、数值计算实例:数值计算是工程技术中的一个重要方向,主要涉及方程求解、优化问题和数值模拟等任务。
Matlab提供了丰富的数值计算工具包,用于求解复杂的数学问题。
MATLAB程序设计及应用实例
(2)函数文件的调用
函数所传递参数的可调性
在调用函数时,MATLAB用两个永久变量nargin 和nargout分别记录调用该函数时的输入实参和 输出实参的个数。只要在函数文件中包含这两 个变量,就可以准确地知道该函数文件被调用 时的输入输出参数个数,从而决定函数如何进 行处理 例:nargin用法示例
5.1.5 循环结构- for语句
例 已知5个学生4门功课的成绩,求每名学生的总 成绩 程序如下:
s=0; a=[65,76,56,78;98,83,74,85;76,67,78,79;98,58,4 2,73;67,89,76,87]; for k=a s=s+k; end disp(s);
5.1.5 循环结构
循环语句 for语句 while语句 循环的嵌套
5.1.5 循环结构- for语句
1. for语句
语句格式为:
for 循环变量=表达式1:表达式2:表达 式3 循环体语句 end
5.1.5 循环结构- for语句
for语句更一般的格式:
for 循环变量=矩阵表达式 循环体语句 end 执行过程是依次将矩阵的各列元素赋给循环变量, 然后执行循环体语句,直至各列元素处理完毕。 实际上,“表达式1:表达式2:表达式3”是一个 仅为一行的矩阵(行向量),因而列向量是单个数 据。
例 计算分段函数值
程序如下: x=input('请输入x的值:'); if x==10 y=cos(x+1)+sqrt(x*x+1); else y=x*sqrt(x+sqrt(x)); end
y
3.多分支if语句
多分支if语句格式为:
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']);。
matlab实用程序实例
实例1:三角函数曲线(1)function shili01h0=figure('toolbar','none',...'position',[198 56 350 300],...'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])。
MATLAB程序设计及应用实例
MATLAB程序设计及应用实例MATLAB程序设计及应用实例⒈引言⑴研究背景⑵研究目的⑶本文档结构⒉MATLAB基础知识⑴ MATLAB简介⑵ MATLAB环境搭建⑶ MATLAB基本语法⑷数据类型与变量⑸数组与矩阵操作⑹控制结构⑺函数与脚本文件⒊数据处理与可视化⑴数据读取与写入⑵数据清洗与预处理⑶数据分析与统计⑷数据可视化方法⑸图形用户界面设计⑹三维数据可视化⒋信号处理与图像处理⑴信号基础知识⑵信号与变换⑶滤波处理技术⑷频域分析与滤波⑸彩色图像处理⑹图像分割与识别⒌数值计算与算法实现⑴数值积分与微分⑵方程求解与优化⑶线性代数计算⑷插值与拟合⑸数学建模实例⒍控制系统设计与仿真⑴控制系统基础知识⑵传递函数建模与分析⑶状态空间建模与控制⑷ PID控制⑸高级控制方法⑹仿真与实验验证⒎机器学习与深度学习⑴机器学习基础概念⑵监督学习与无监督学习⑶特征工程与数据预处理⑷常用机器学习算法⑸深度学习基础知识⑹深度学习模型设计与训练附件:- 附件一:示例数据文件- 附件二:代码实现文件法律名词及注释:⒈版权:保护原创作品的法律权益,禁止未经授权的复制或传播。
⒉开源许可:允许他人查看、修改和分享软件源代码的许可方式。
⒊商标:商业标识,用于区分不同企业或产品的法律保护。
⒋隐私权:个人信息的保护与合法使用的法律规定。
⒌免责声明:对可能存在的风险与责任进行明确说明以保护作者的合法权益。
matlab课程设计
MATLAB程序设计实践班级:材料0909姓名:金亚楠学号:0604090910指导老师:汪冰峰材料科学与工程学院2012年4月10日一、编程实现“Lagrange 差值”,并举一例应用之。
【实例】给出f(x)=lnx 的数值表,如下表所示,用Lagrange 差值计算ln(0.54)的近似值。
x 0.4 0.5 0.6 0.7 0.8 Ln(x) -0.916291 -0.693147 -0.510826 -0.357765 -0.2231441、算法说明Lagrange 差值原理:对给定的n 个差值节点x 1,x 2,…,x n 及对应的函数值y 1,y 2,…,y n ,利用n 次Lagrange 差值多项式公式,则对差值区间内任意x 的函数值y 可以通过下式求得:y (x )=∑y k ∙n k=1( ∏x −x j x k −x jnj=1j≠k )实例求解原理:输入5个差值节点值及其对应的函数值,调用Lagrange 差值函数即可求出ln(0.54)的值。
2、流程图Lagrange 差值流程图: 图1 Lagrange 差值流程图否 是 确定差值节点个数n 、待求节点个数m i=1,2,…,mz=x(i), s=0.0K=1,2,…,nj=1,2,…,nz=x(i), s=0.0J=k?p=p*(z-x0(j))/(x0(k)-x0(j)s=p*y0(k)+sy(i)=sP=1.0实例求解流程图:创建插值节点矩阵x及其对应的函数值矩阵y调用lagrange函数求x=0.54处的函数值图2 实例求解流程图3、源程序代码Lagrange差值源程序:%lagrange insertfunction y=lagrange(x0,y0,x)n=length(x0);m=length(x); %确定差值节点个数n、待求节点个数mfor i=1:m %最外层循环,循环求解各待求节点处的函数值z=x(i); %依次将差值节点值赋给变量zs=0.0; %s为累加和变量,赋初值0.0for k=1:n %第二层循环,求累加和p=1.0; %p为连乘积,赋初值1.0for j=1:n %第三层循环,求连乘if j~=k %连乘循环节p=p*(z-x0(j))/(x0(k)-x0(j));endend%第三层循环结束,连乘结果为ps=p*y0(k)+s; %累加循环节end%第二层循环结束,累加结果为sy(i)=s; %将累加结果赋给变量y(i),y(i)即为待求节点函数值end%最外层循环结束,求得待求节点函数值矩阵y实例求解源程序:%runlagrangex=[0.4:0.1:0.8]; %创建插值节点矩阵x及其对应的函数值矩阵yy=[-0.916291 -0.693147 -0.510826 -0.356675 -0.223144];lagrange(x,y,0.54) %调用Lagrange函数求0.54处的函数值4、程序运行结果ans =-0.616142715200000二、编程解决以下科学计算和工程实际问题A、给定由N个力F i⃗⃗⃗ (i=1,2,…,N)组成的平面任意力系,求其合力。
MATLAB程序设计及应用(第二版)课后实验答案
MATLAB程序设计及应⽤(第⼆版)课后实验答案Matlab 课后实验题答案实验⼀ MATLAB 运算基础1. 先求下列表达式的值,然后显⽰MATLAB ⼯作空间的使⽤情况并保存全部变量。
(1) 0122sin851z e=+ (2) 221ln(1)2z x x =++,其中2120.455i x +??=??-?? (3) 0.30.330.3sin(0.3)ln , 3.0, 2.9,,2.9,3.022a a e e az a a --+=++=-- (4) 2242011122123t t z t t t t t ?≤,其中t =0:0.5:2.5 解:M ⽂件:z1=2*sin(85*pi/180)/(1+exp(2))x=[2 1+2*i;-.45 5];z2=1/2*log(x+sqrt(1+x^2)) a=-3.0:0.1:3.0;z3=(exp(0.3.*a)-exp(-0.3.*a))./2.*sin(a+0.3)+log((0.3+a)./2) t=0:0.5:2.5;z4=(t>=0&t<1).*(t.^2)+(t>=1&t<2).*(t.^2-1)+(t>=2&t<3) .*(t.^2-2*t+1)2. 已知:1234413134787,2033657327A B --==-求下列表达式的值:(1) A+6*B 和A-B+I (其中I 为单位矩阵) (2) A*B 和A.*B (3) A^3和A.^3 (4) A/B 及B\A(5) [A,B]和[A([1,3],:);B^2] 解:M ⽂件:A=[12 34 -4;34 7 87;3 65 7];B=[1 3 -1;2 0 3;3 -2 7]; A+6.*BA-B+eye(3) A*B A.*B A^3 A.^3 A/B B\A [A,B][A([1,3],:);B^2]3. 设有矩阵A 和B1234166789101769,111213141502341617181920970212223242541311A B-???==-???(1) 求它们的乘积C 。
matlab十个简单案例编写
matlab十个简单案例编写1. 求解线性方程组线性方程组是数学中常见的问题之一,而MATLAB提供了用于求解线性方程组的函数。
例如,我们可以使用"linsolve"函数来求解以下线性方程组:2x + 3y = 74x - 2y = 2代码如下所示:A = [2, 3; 4, -2];B = [7; 2];X = linsolve(A, B);disp(X);解释:上述代码定义了一个2x2的矩阵A和一个2x1的矩阵B,分别表示线性方程组的系数矩阵和常数向量。
然后,使用linsolve函数求解线性方程组,结果存储在X中,并通过disp函数打印出来。
运行代码后,可以得到x=2和y=1的解。
2. 求解非线性方程除了线性方程组外,MATLAB还可以用于求解非线性方程。
例如,我们可以使用"fzero"函数求解以下非线性方程:x^2 + 2x - 3 = 0代码如下所示:fun = @(x) x^2 + 2*x - 3;x0 = 0;x = fzero(fun, x0);disp(x);解释:上述代码定义了一个匿名函数fun,表示非线性方程。
然后,使用fzero函数传入fun和初始值x0来求解非线性方程的根,并通过disp函数打印出来。
运行代码后,可以得到x=1的解。
3. 绘制函数图像MATLAB提供了强大的绘图功能,可以帮助我们可视化函数的形状和特征。
例如,我们可以使用"plot"函数绘制以下函数的图像:y = cos(x)代码如下所示:x = linspace(0, 2*pi, 100);y = cos(x);plot(x, y);解释:上述代码首先使用linspace函数生成一个从0到2π的100个等间距点的向量x,然后计算对应的cos值,并存储在向量y中。
最后,使用plot函数将x和y作为横纵坐标绘制出函数图像。
运行代码后,可以看到cos函数的周期性波动图像。
915225-MATLAB程序设计与应用-第8章 MATLAB方程数值求解__源程序
第8章MATLAB方程数值求解例8-1用直接解法求解下列线性方程组。
程序如下:A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];b=[13,-9,6,0]';x=A\b例8-2用LU分解求解例8-1中的线性方程组。
程序如下:A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];b=[13,-9,6,0]';[L,U]=lu(A);x=U\(L\b)例8-3 用QR分解求解例8-1中的线性方程组。
程序如下:A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];b=[13,-9,6,0]';[Q,R]=qr(A);x=R\(Q\b)例8-4 用Cholesky分解求解例8-1中的线性方程组。
命令如下:>> A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4]; >> b=[13,-9,6,0]';>> R=chol(A)Jacobi迭代法的MA TLAB函数文件jacobi.m如下:function [y,n]=jacobi(A,b,x0,ep)if nargin==3ep=1.0e-6;elseif nargin<3errorreturnendD=diag(diag(A)); %求A的对角矩阵L=-tril(A,-1); %求A的下三角阵U=-triu(A,1); %求A的上三角阵B=D\(L+U);f=D\b;y=B*x0+f;n=1; %迭代次数while norm(y-x0)>=epx0=y;y=B*x0+f;n=n+1;end例8-5 用Jacobi迭代法求解下列线性方程组。
设迭代初值为0,迭代精度为10-6。
在程序中调用函数文件jacobi.m,程序如下:A=[10,-1,0;-1,10,-2;0,-2,10];b=[9,7,6]';[x,n]=jacobi(A,b,[0,0,0]',1.0e-6)Gauss-Serdel迭代法的MA TLAB函数文件gauseidel.m如下:function [y,n]=gauseidel(A,b,x0,ep)if nargin==3ep=1.0e-6;elseif nargin<3errorreturnendD=diag(diag(A)); %求A的对角矩阵L=-tril(A,-1); %求A的下三角阵U=-triu(A,1); %求A的上三角阵G=(D-L)\U;f=(D-L)\b;y=G*x0+f;n=1; %迭代次数while norm(y-x0)>=epx0=y;y=G*x0+f;n=n+1;end例8-6 用Gauss-Serdel迭代法求解例8-5中的线性方程组。
MATLAB程序设计与应用(第二版)课后实验答案
Matlab课后实验题答案实验一 MATLAB运算基础1. 先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。
(1)0 122sin851ze =+(2)21ln(2z x=,其中2120.455ix+⎡⎤=⎢⎥-⎣⎦(3)0.30.330.3sin(0.3)ln, 3.0, 2.9,,2.9,3.0 22a ae e az a a--+=++=--(4)2242011122123t tz t tt t t⎧≤<⎪=-≤<⎨⎪-+≤<⎩,其中t=0:0.5:2.52. 已知:1234413134787,2033657327A B --⎡⎤⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎢⎥-⎣⎦⎣⎦求下列表达式的值:(1) A+6*B 和A —B+I(其中I 为单位矩阵) (2) A*B 和A.*B (3) A^3和A.^3 (4) A/B 及B\A(5) [A,B ]和[A ([1,3],:);B^2] 解:3. 设有矩阵A 和B123453166789101769,111213141502341617181920970212223242541311A B ⎡⎤⎡⎤⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥⎢⎥==-⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦(1) 求它们的乘积C 。
(2) 将矩阵C 的右下角3×2子矩阵赋给D 。
(3) 查看MATLAB 工作空间的使用情况。
4. 完成下列操作:(1) 求[100,999]之间能被21整除的数的个数。
(2) 建立一个字符串向量,删除其中的大写字母。
解:(1) 结果:(2).建立一个字符串向量 例如: ch='ABC123d4e56Fg9';则要求结果是:实验二 MATLAB 矩阵分析与处理1。
设有分块矩阵33322322E R A O S ⨯⨯⨯⨯⎡⎤=⎢⎥⎣⎦,其中E 、R 、O 、S 分别为单位矩阵、随机矩阵、零矩阵和对角阵,试通过数值计算验证22E R RS A OS +⎡⎤=⎢⎥⎣⎦。
MATLAB程序设计与应用
实验一 MATLAB 运算基础 第二题:已知A=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡7653877344-3412 B=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡72-33021-31求下列问题:1) A+6*B 和A-B+I2) A*B 和A.*B3) A^3 A.^34) A/B B\A5) [A,B] [A(1,3),:B.^2]解:>> A=[12 34 -4;34 7 87;3 65 7]; B=[1 3 -1;2 0 3;3 -2 7]; I=[1 0 0;0 1 0;0 0 1];(1)>> A+6*Bans =18 52 -1046 7 10521 53 49>> A-B+Ians =12 31 -332 8 840 67 1(2)>> A*Bans =68 44 62309 -72 596154 -5 241>> A.*Bans =12 102 468 0 2619 -130 49(3)>> A^3ans =37226 233824 48604 247370 149188 600766 78688 454142 118820>> A.^3ans =1728 39304 -64 39304 343 658503 27 274625 343(4)>> A/Bans =16.4000 -13.6000 7.600035.8000 -76.2000 50.200067.0000 -134.0000 68.0000>> B\Aans =109.4000 -131.2000 322.8000-53.0000 85.0000 -171.0000-61.6000 89.8000 -186.2000(5)>> [A,B]ans =12 34 -4 1 3 -134 7 87 2 0 33 65 7 3 -2 7>> [A([1,3],:);B^2]ans =12 34 -43 65 74 5 111 0 1920 -5 40第三题:设有矩阵A 和BA=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡25242322212019181716151413121110987654321 B=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡111340794-23096-1716031) 求他们的乘积C2) 将矩阵C 的右下角3*2子矩阵赋给D3) 查看matlab 工作空间的使用情况解:>> A=[1 2 3 4 5;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20;21 22 23 24 25]; B=[30 16;17 -6 9;0 23 -4;9 7 0;4 13 11];(1)>> C=A*BC =93 150 77258 335 237423 520 397588 705 557753 890 717(2)>> D=C(3:5,2:3)D =520 397705 557890 717第四题:完成下列操作:1)求【100,999】之间能被21的数的个数2)建立一个字符串向量,删除其中的大写字母解:(1)>> A=100:999;>> B=rem(A,21);>> C=length(find(B==0))C =43(2)>> A='lsdhKSDLKklsdkl';>> k=find(A>='A'&A<='Z');>> A(k)=[]A =Lsdhklsdkl实验二 MATLAB矩阵分析与处理第三题: 建立一个5 5矩阵,求它的行列式的值,迹,秩,和范数。
实验3 MATLAB程序设计
实验3 MATLAB程序设计实验3 MATLAB程序设计一、实验目的通过编写MATLAB程序,掌握基本的程序设计能力,提高对于MATLAB语言的熟悉度。
二、实验内容本次实验包含以下三个部分:1. 编写一个程序,计算前n项的斐波那契数列。
2. 编写一个程序,求解一个二次方程的根。
3. 编写一个程序,实现两个矩阵的相乘。
三、实验步骤1. 斐波那契数列编写一个程序,计算前n项的斐波那契数列。
斐波那契数列的前两个数为0和1,之后的每一项都是前两项的和。
matlabfunction fibonacci(n)fib = zeros(1, n);fib(1) = 0;fib(2) = 1;for i = 3:nfib(i) = fib(i-1) + fib(i-2);enddisp(fib);end2. 二次方程的根编写一个程序,求解一个二次方程的根。
用户输入三个系数a、b 和c,程序返回求解得到的根。
matlabfunction [x1, x2] = quadraticEquation(a, b, c)delta = b^2 4ac;if delta < 0fprintf('该方程无实数根\');elseif delta == 0x1 = -b / (2a);x2 = x1;fprintf('该方程有一个重根:x = %.2f\', x1);elsex1 = (-b + sqrt(delta)) / (2a);x2 = (-b sqrt(delta)) / (2a);fprintf('该方程有两个根:x1 = %.2f, x2 = %.2f\ ', x1, x2);endend3. 矩阵相乘编写一个程序,实现两个矩阵的相乘。
用户输入两个矩阵,程序返回相乘得到的矩阵。
matlabfunction result = matrixMultiply(matrix1, matrix2)[m1, n1] = size(matrix1);[m2, n2] = size(matrix2);if n1 ~= m2fprintf('矩阵无法相乘!\');result = ;elseresult = zeros(m1, n2);for i = 1:m1for j = 1:n2for k = 1:n1result(i, j) = result(i, j) + matrix1(i, k) matrix2(k, j);endendendendend四、实验结果1. 斐波那契数列:输入n=10,输出[0 1 1 2 3 5 8 13 21 34]。
MATLAB程序设计及应用(第二版)课后实验答案
Matlab课后实验题答案实验一 MATLAB运算基础1。
先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。
(1)0 122sin851ze =+(2)21ln(2z x=,其中2120.455ix+⎡⎤=⎢⎥-⎣⎦(3)0.30.330.3sin(0.3)ln, 3.0, 2.9,,2.9,3.0 22a ae e az a a--+=++=--(4)2242011122123t tz t tt t t⎧≤<⎪=-≤<⎨⎪-+≤<⎩,其中t=0:0.5:2。
52. 已知:1234413134787,2033657327A B --⎡⎤⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎢⎥-⎣⎦⎣⎦求下列表达式的值:(1) A+6*B 和A —B+I (其中I 为单位矩阵) (2) A*B 和A 。
*B (3) A^3和A.^3 (4) A/B 及B\A(5) [A,B ]和[A([1,3],:);B^2] 解:3. 设有矩阵A 和B123453166789101769,111213141502341617181920970212223242541311A B ⎡⎤⎡⎤⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥⎢⎥==-⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦(1) 求它们的乘积C 。
(2) 将矩阵C 的右下角3×2子矩阵赋给D 。
(3) 查看MATLAB 工作空间的使用情况。
4。
完成下列操作:(1) 求[100,999]之间能被21整除的数的个数。
(2) 建立一个字符串向量,删除其中的大写字母。
解:(1) 结果:(2)。
建立一个字符串向量例如: ch=’ABC123d4e56Fg9’;则要求结果是:实验二 MATLAB 矩阵分析与处理1。
设有分块矩阵33322322E R A O S ⨯⨯⨯⨯⎡⎤=⎢⎥⎣⎦,其中E 、R 、O 、S 分别为单位矩阵、随机矩阵、零矩阵和对角阵,试通过数值计算验证22E R RS A OS +⎡⎤=⎢⎥⎣⎦。
Matlab程序设计方案及应用实验讲义
封面作者:PanHongliang仅供个人学习Matlab程序设计及应用实验讲义自编电子科学与工程系2013.02 实验一 MATLAB环境与命令窗口1、实验目的1)熟悉MATLAB的操作环境及基本操作方法;2)掌握MATLAB的搜索路径及其设置方法;3)熟悉MATLAB帮助信息的查阅方法;2、实验主要仪器设备和材料计算机PC一台 2010a软件3、实验内容和原理1、先建立自己的工作目录,再将自己的工作目录设置到MATLAB的搜索路径下,再实验用help命令能否查询到自己的工作目录。
2、在MATLAB环境下验证下面几个例子,并总结MATLAB的主要优点。
1)绘制正弦曲线和余弦曲线2)求方程的全部根3)求积分4)求解线性方程组3、利用MATLAB的帮助功能分别查询inv 、plot、 max 、round等函数的功能与用法4、完成下列操作:1)在MATLAB命令窗口输入以下命令:x=0:pi/10:2*pi。
y=sin(x)。
2)在工作空间窗口选择变量y,再在工作空间窗口选择绘图菜单命令或在工具栏中单击绘图命令按钮,绘制变量的图形,并分析图形的含义。
5、访问MathsWorks公司的主页,查询有关MATLAB的产品信息。
思考与练习1、如何启动和退出MATLAB的集成环境?2、简述MATLAB的主要功能。
3、如果一个MATLAB命令包含的字符很多,需要分成多行输入,该如何处理?4、help命令和look for命令有何区别?5、在MATLAB环境下,建立一个变量fac,同时又在当前目录下建立了一个M 文件fac.m,如果需要运行fac.m文件,该如何处理?实验二数值数组的创建与运算1、实验目的1)掌握MATLAB数据对象的特点以及数据的运算规则。
2)掌握MATLAB中建立矩阵的方法以及矩阵处理的方法。
3)掌握MATLAB分析的方法。
2、实验主要仪器设备和材料计算机PC一台 2010a软件3、实验内容和原理1、求下列表达式的值:1)2),其中,,,。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MATLAB程序设计及应用实例
(3)全局变量和局部变量
全局变量用命令global定义。函数文件的内部变量是局 部的,与其他函数文件及MATLAB工作空间相互隔离
(2)关于注释说明部分。注释说明包括三部分内容:①紧随 函数文件引导行之后以%开头的第一注释行。②第一注释 行及之后连续的注释行。③与在线帮助文本相隔一空行 的注释行。
MATLAB程序设计及应用实例
(2)函数文件的调用
函数调用的一般格式: [输出实参表]=函数名(输入实参表)
注意:等号左边是方括号,右边输入参数用 括号
MATLAB程序设计及应用实例
(2)函数文件的调用
函数所传递参数的可调性
在调用函数时,MATLAB用两个永久变量nargin 和nargout分别记录调用该函数时的输入实参和 输出实参的个数。只要在函数文件中包含这两 个变量,就可以准确地知道该函数文件被调用 时的输入输出参数个数,从而决定函数如何进 行处理
5.1.1 M文件
例 建立一个命令文件将变量a,b的值互换, 然后运行该命令文件。
首先建立命令文件并以文件名exch.m存盘: clear; a=1:10; b=[11,12,13,14;15,16,17,18]; c=a;a=b;b=c; a b 然后在MATLAB的命令窗口中输入exch,将会执
例 全局变量应用示例。 先建立函数文件wadd.m,该函数将输入的参数加权相加。 function f=wadd(x,y)
global ALPHA BETA f=ALPHA*x+BETA*y; 在命令窗口中输入: global ALPHA BETA ALPHA=1; BETA=2; s=wadd(1,2)
2. 编辑已有的M文件 3. M文件的分类 P116 4.1.2内容
➢ 分类:脚本文件(Script File)和函数文件(Function File)。
➢ 主要区别。
MATLAB程序设计及应用实例
M文件的基本结构
函数定义行 H1行 对程序的总体介绍 函数说明 对程序详细描述 程序主体 注释 解释程序功能的文字
行该命令文件。
MATLAB程序设计及应用实例
M文件的建立与编辑
1.建立新的M文件
(1)菜单操作:MATLAB命令窗口的File菜单 → New菜单项 → M-file命令。
(2)命令操作:在MATLAB命令窗口输入命令edit。 (3)命令按钮操作:单击MATLAB命令窗口工具栏上的“新建”
命令按钮。
MATLAB程序设计及应用实例
5.1.3 数据的输入输出指令
input函数 disp函数 pause函数
MATLAB程序设计及应用实例
input函数
调用格式为: A=input(‘提示信息’,选项);
其中提示信息为一个字符串,用于提示用户输 入什么样的数据。
如果在input函数调用时采用's'选项,则允许 用户输入一个字符串。例如,想输入一个人的 姓名,可采用命令:
说明:除程序主体外,其他部分以%开头。 P116 实例
MATLAB程序设计及应用实例
5.1.2 脚本文件和函数文件
1 脚本文件
➢ 没有输入和输出 ➢ 由一系列指令组成 ➢ 可在命令窗口直接运行 ➢ 产生的所有变量存储在workspace中。 ➢ 例 exam5_1.m。
MATLAB程序设计及应用实例
例:nargin用法示例
MATLAB程序设计及应用实例
(2)函数文件的调用
函数文件examp.m: function fout=charray(a,b,c) if nargin==1 fout=a; elseif nargin==2 fout=a+b; elseif nargin==3 fout=(a*b*c)/2; end
MATLAB程序设计及应用实例
例5.1 编写函数文件求半径为r的圆的面积和周长
function [s,p]=fcircle(r)
%FCIRCLE calculate the area and perimeter of a circle of radii r
%r
圆半径
%s
圆面积
%p
圆周长
s=pi*r*r;
第5章 MATLAB程序设计及应用
5.1 MATLAB程序设计 5.2 应用实例
MATLAB程序设计及应用实例
5.1 MATLAB程序设计
5.1.1 M文件 5.1.2 脚本文件和函数文件 5.1.5 数据的输入输出 5.1.3 选择结构 5.1.4 循环结构 5.1.6 M文件调试
MATLAB程序设计及应用实例
p=2*pi*r;
以上函数文件以文件名fcircle.m存入 c:\matlab7\work\mas下,然后在MATLAB命令窗口调用 该函数:
[s,p]=fcircle(10)
MATLAB程序设计及应用实例
(2)函数文件的调用
函数的递归调用 例:利用递归调用函数文件factor.m: function f=factor(n) if n<=1 f=1; else f=factor(n-1)*n; end 在命令文件main5_1.m中调用函数文件 factor.m求s=1!+2!+3!&文件的基本结构
➢ 函数文件由function语句引导 ➢ 其基本结构为:
function 输出形参表=函数名(输入形参表) %注释说明部分 函数体语句
MATLAB程序设计及应用实例
(1) 函数文件的基本结构
函数文件的格式说明
(1)关于函数文件名: 函数文件名与函数名也可以不相同 (一般设为相同!)。当两者不同时,MATLAB将忽略函 数名而确认函数文件名,因此调用时使用函数文件名。
xm=input('What is your name?','s')
MATLAB程序设计及应用实例
disp函数
调用格式为
disp(输出项) 其中输出项既可以为字符串,也可以为矩阵。 注意:用disp函数显示矩阵时将不显示矩阵的 名字,而且其格式更紧密,且不留任何没有意 义的空行。