教学第一讲-MATLAB-编程实例课件_第1页
教学第一讲-MATLAB-编程实例课件_第2页
教学第一讲-MATLAB-编程实例课件_第3页
教学第一讲-MATLAB-编程实例课件_第4页
教学第一讲-MATLAB-编程实例课件_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MATLAB编程实例(I)hjTang@MATLAB编程实例(I)1MATLAB编程实例(I)hjTang@xidian.ed目录求素数计算税率逆序存放数组有序数组的插入打印杨辉三角打印矩阵的最小值打印鞍点求矩阵的所有K阶子式MATLAB编程实例(I)2目录求素数MATLAB编程实例(I)21.求素数输入一个数,判断它是否是素数,如果不是素数,则至少输出它的一个非1因子MATLAB编程实例(I)31.求素数输入一个数,判断它是否是素数,如果不是素数,则至程序%求一个矩阵中的每个元素是否是奇数,相当于MATLAB的函数isprimefunction[resfctr]=is_prime(n)res=ones(size(n));fctr=ones(size(n));forK=1:length(n(:))cur_n=n(K);[res(K)fctr(K)]=is_a_prime(cur_n);end%判断单个数是否是奇数function[resfctr]=is_a_prime(n)res=true;forI=2:floor(sqrt(n))ifmod(n,I)==0fctr=I;res=false;return;endend%主程序subplot(3,1,1);A=[2:100];stem(A,A.*is_prime(A),'.-')subplot(3,1,2);A=[2:1000];stem(A,A.*is_prime(A),'.-')subplot(3,1,3);A=[2:5000];stem(A,A.*is_prime(A),'.-')MATLAB编程实例(I)4程序%求一个矩阵中的每个元素是否是奇数,相当于MATLAB结果MATLAB编程实例(I)5结果MATLAB编程实例(I)52.计算税率月收入税率1600以下01600-21005%2100-360010%3600-660015%6600-2160020%21600-4160025%41600-6160030%61600-8160035%81600-10160040%101600以上45%MATLAB编程实例(I)62.计算税率月收入税率1600以下01600-21005%salary=linspace(0,10000,20);plot(salary,get_revenue(salary),'x-');gridon;subplot(2,1,2);salary=linspace(10000,200000,20);plot(salary,get_revenue(salary),'x-');gridon;functionrevenues=get_revenue(salaries)revenues=ones(size(salaries));forI=1:length(salaries(:))revenues(I)=get_a_revenue(salaries(I));end程序1functionrevenue=get_a_revenue(salary)revenue=0;ifsalary<1600return;end%--1600~2100salary=salary-1600;ifsalary<(2100-1600)revenue=revenue+salary*0.05;return;elserevenue=revenue+(2100-1600)*0.05;end%--2100~3600salary=salary-(2100-1600);ifsalary<(3600-2100)revenue=revenue+salary*0.10;return;elserevenue=revenue+(3600-2100)*0.10;end%--3600~6600%--6600~21600%--21600~41600%--41600~61600%--61600~81600%--81600~101600%--81600~101600salary=salary-(81600-61600);ifsalary<(101600-81600)revenue=revenue+salary*0.40;return;elserevenue=revenue+(101600-81600)*0.40;end%--101600~infsalary=salary-(101600-81600);revenue=revenue+salary*0.45;MATLAB编程实例(I)7salary=linspace(0,10000,20);结果MATLAB编程实例(I)8结果MATLAB编程实例(I)8程序2:查表法functionrevenues=get_a_revenue2(salary)revenues=0;starts=[-inf,1600,2100,3600,6600,21600,41600,61600,81600,101600,inf];pre_fee=[0,0,25,175,625,3625,8625,14625,21625,29625];rates=[0,0.05,0.10,0.15,0.20,0.25,0.30,0.35,0.40,0.45];pre_I=find(starts>salary);I=pre_I(1)-1;if(I==0)return;endrevenues=pre_fee(I)+(salary-starts(I))*rates(I);MATLAB编程实例(I)9程序2:查表法functionrevenues=get3.逆序存放数组给定一个数组,将其逆序存放,如:将

A=[12345679100]

变成

A=[10097654321]MATLAB编程实例(I)103.逆序存放数组给定一个数组,将其逆序存放,如:将

A=程序A=[1:79100]I=1;J=length(A);whileI<Jtemp=A(I);A(I)=A(J);A(J)=temp;I=I+1;J=J-1;endAMATLAB函数:rot90(rot90(A))或fliplr(A)%flipudMATLAB编程实例(I)11程序A=[1:79100]MATLAB函数:MATL4.有序数组的插入已知A为一有序向量(由小到大排列),试将B依次插入至A中,使得A仍然有序,例如

A=[13459]

B=[26]

插入后A为

A=[123569]MATLAB编程实例(I)124.有序数组的插入已知A为一有序向量(由小到大排列),试将程序functionA=insert1(A,n)A=[An];forI=length(A)-1:-1:1ifn>A(I)A(I+1)=n;return;endA(I+1)=A(I);endA(I)=n;functionA=insert2(A,n)I=find(A>n);if(length(I)==0)A=[An];return;endI=I(1);A=[A(1:I-1)nA(I:length(A))];MATLAB编程实例(I)13程序functionA=insert1(A,n)fu5.打印杨辉三角111121133114641151010511615201561MATLAB编程实例(I)145.打印杨辉三角1MATLAB编程实例(I)14程序functionyanhui2(n)A=1;disp(A);forI=2:nA=[A0]+[0A];disp(A);endfunctionyanhui1(n)A=1;disp(A);forI=2:nB=[1A];A=[A0];forJ=2:IB(J)=A(J-1)+A(J);enddisp(B);A=B;endMATLAB编程实例(I)15程序functionyanhui2(n)function11112113311464115101051161520156117213535217118285670562881193684126126843691打印结果MATLAB编程实例(I)16打印结果MATLAB编程实例(I)166.打印矩阵的最小值及其位置function[vpos]=get_min1(A)pos=[];v=min(min(A));[MN]=size(A);forI=1:MforJ=1:Nif(v==A(I,J))pos=[pos;IJ];endendendMATLAB编程实例(I)176.打印矩阵的最小值及其位置function[vpos7.打印鞍点所谓矩阵的鞍点,就是在矩阵中行上最小,列上最大的元素。如

鞍点为(3,3)21

9450174507762137858737921285486441022659952149031MATLAB编程实例(I)187.打印鞍点所谓矩阵的鞍点,就是在矩阵中行上最小,列上最大程序function[vpos]=saddle(A)v=[];pos=[];line_min=min(A');N=size(A,1);forI=1:NJs=find(A(I,:)==line_min(I));forK=1:length(Js)J=Js(K);ifA(I,J)>=max(A(:,J))v=[vA(I,J)];pos=[pos;IJ];endendendMATLAB编程实例(I)19程序function[vpos]=saddle(A)8.求矩阵的所有K阶子式给定一个M×N矩阵,试求出其所有K阶子式MATLAB编程实例(I)208.求矩阵的所有K阶子式给定一个M×N矩阵,试求出其所有K程序M=3;N=5;%生成一个M=3行N=5列

%有规律的矩阵%1112131415%2122232425%3132333435A=(1:M)'*ones(1,N)*10

+ones(M,1)*(1:N);disp(A);disp_rank_k(A,3);functiondisp_rank_k(A,K)[MN]=size(A);ifK>M||K>Ndisp('Inputerror');returnendIs=combnk(1:M,K);Js=combnk(1:N,K);cnt=1;forI=1:size(Is,1)II=Is(I,:);forJ=1:size(Js,1);JJ=Js(J,:);disp(sprintf('%3d:',cnt));cnt=cnt+1;disp(A(II,JJ));endMATLAB编程实例(I)21程序M=3;functiondisp_rank_k(A课后练习题编写高斯列主元消去法求线性方程组的解MATLAB编程实例(I)22课后练习题编写高斯列主元消去法求线性方程组的解MATLABMATLAB编程实例(I)hjTang@MATLAB编程实例(I)23MATLAB编程实例(I)hjTang@xidian.ed目录求素数计算税率逆序存放数组有序数组的插入打印杨辉三角打印矩阵的最小值打印鞍点求矩阵的所有K阶子式MATLAB编程实例(I)24目录求素数MATLAB编程实例(I)21.求素数输入一个数,判断它是否是素数,如果不是素数,则至少输出它的一个非1因子MATLAB编程实例(I)251.求素数输入一个数,判断它是否是素数,如果不是素数,则至程序%求一个矩阵中的每个元素是否是奇数,相当于MATLAB的函数isprimefunction[resfctr]=is_prime(n)res=ones(size(n));fctr=ones(size(n));forK=1:length(n(:))cur_n=n(K);[res(K)fctr(K)]=is_a_prime(cur_n);end%判断单个数是否是奇数function[resfctr]=is_a_prime(n)res=true;forI=2:floor(sqrt(n))ifmod(n,I)==0fctr=I;res=false;return;endend%主程序subplot(3,1,1);A=[2:100];stem(A,A.*is_prime(A),'.-')subplot(3,1,2);A=[2:1000];stem(A,A.*is_prime(A),'.-')subplot(3,1,3);A=[2:5000];stem(A,A.*is_prime(A),'.-')MATLAB编程实例(I)26程序%求一个矩阵中的每个元素是否是奇数,相当于MATLAB结果MATLAB编程实例(I)27结果MATLAB编程实例(I)52.计算税率月收入税率1600以下01600-21005%2100-360010%3600-660015%6600-2160020%21600-4160025%41600-6160030%61600-8160035%81600-10160040%101600以上45%MATLAB编程实例(I)282.计算税率月收入税率1600以下01600-21005%salary=linspace(0,10000,20);plot(salary,get_revenue(salary),'x-');gridon;subplot(2,1,2);salary=linspace(10000,200000,20);plot(salary,get_revenue(salary),'x-');gridon;functionrevenues=get_revenue(salaries)revenues=ones(size(salaries));forI=1:length(salaries(:))revenues(I)=get_a_revenue(salaries(I));end程序1functionrevenue=get_a_revenue(salary)revenue=0;ifsalary<1600return;end%--1600~2100salary=salary-1600;ifsalary<(2100-1600)revenue=revenue+salary*0.05;return;elserevenue=revenue+(2100-1600)*0.05;end%--2100~3600salary=salary-(2100-1600);ifsalary<(3600-2100)revenue=revenue+salary*0.10;return;elserevenue=revenue+(3600-2100)*0.10;end%--3600~6600%--6600~21600%--21600~41600%--41600~61600%--61600~81600%--81600~101600%--81600~101600salary=salary-(81600-61600);ifsalary<(101600-81600)revenue=revenue+salary*0.40;return;elserevenue=revenue+(101600-81600)*0.40;end%--101600~infsalary=salary-(101600-81600);revenue=revenue+salary*0.45;MATLAB编程实例(I)29salary=linspace(0,10000,20);结果MATLAB编程实例(I)30结果MATLAB编程实例(I)8程序2:查表法functionrevenues=get_a_revenue2(salary)revenues=0;starts=[-inf,1600,2100,3600,6600,21600,41600,61600,81600,101600,inf];pre_fee=[0,0,25,175,625,3625,8625,14625,21625,29625];rates=[0,0.05,0.10,0.15,0.20,0.25,0.30,0.35,0.40,0.45];pre_I=find(starts>salary);I=pre_I(1)-1;if(I==0)return;endrevenues=pre_fee(I)+(salary-starts(I))*rates(I);MATLAB编程实例(I)31程序2:查表法functionrevenues=get3.逆序存放数组给定一个数组,将其逆序存放,如:将

A=[12345679100]

变成

A=[10097654321]MATLAB编程实例(I)323.逆序存放数组给定一个数组,将其逆序存放,如:将

A=程序A=[1:79100]I=1;J=length(A);whileI<Jtemp=A(I);A(I)=A(J);A(J)=temp;I=I+1;J=J-1;endAMATLAB函数:rot90(rot90(A))或fliplr(A)%flipudMATLAB编程实例(I)33程序A=[1:79100]MATLAB函数:MATL4.有序数组的插入已知A为一有序向量(由小到大排列),试将B依次插入至A中,使得A仍然有序,例如

A=[13459]

B=[26]

插入后A为

A=[123569]MATLAB编程实例(I)344.有序数组的插入已知A为一有序向量(由小到大排列),试将程序functionA=insert1(A,n)A=[An];forI=length(A)-1:-1:1ifn>A(I)A(I+1)=n;return;endA(I+1)=A(I);endA(I)=n;functionA=insert2(A,n)I=find(A>n);if(length(I)==0)A=[An];return;endI=I(1);A=[A(1:I-1)nA(I:length(A))];MATLAB编程实例(I)35程序functionA=insert1(A,n)fu5.打印杨辉三角111121133114641151010511615201561MATLAB编程实例(I)365.打印杨辉三角1MATLAB编程实例(I)14程序functionyanhui2(n)A=1;disp(A);forI=2:nA=[A0]+[0A];disp(A);endfunctionyanhui1(n)A=1;disp(A);forI=2:nB=[1A];A=[A0];forJ=2:IB(J)=A(J-1)+A(J);enddisp(B);A=B;endMATLAB编程实例(I)37程序functionyanhui2(n)function11112113311464115101051161520156117213535217118285670562881193684126126843691打印结果MATLAB编程实例(I)38打印结果MATLAB编程实例(I)166.打印矩阵的最小值及其位置function[vpos]=get_min1(A)pos=[];v=min(min(A));[MN]=size(A);forI=1:MforJ=1:Nif(v==A(I,J))pos=[pos;IJ];endendendMATLAB编程实例(I)396.打印矩阵的最小值及其位置function[vpos7.打印鞍点所谓矩阵的鞍点,就是在矩阵中行上最小,列上最大的元素。如

鞍点为(3,3)21

9450174507762

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论