教學(xué)第一講-MATLAB-編程實(shí)例課件_第1頁
教學(xué)第一講-MATLAB-編程實(shí)例課件_第2頁
教學(xué)第一講-MATLAB-編程實(shí)例課件_第3頁
教學(xué)第一講-MATLAB-編程實(shí)例課件_第4頁
教學(xué)第一講-MATLAB-編程實(shí)例課件_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

MATLAB編程實(shí)例(I)hjTang@MATLAB編程實(shí)例(I)1MATLAB編程實(shí)例(I)hjTang@xidian.ed目錄求素?cái)?shù)計(jì)算稅率逆序存放數(shù)組有序數(shù)組的插入打印楊輝三角打印矩陣的最小值打印鞍點(diǎn)求矩陣的所有K階子式MATLAB編程實(shí)例(I)2目錄求素?cái)?shù)MATLAB編程實(shí)例(I)21.求素?cái)?shù)輸入一個(gè)數(shù),判斷它是否是素?cái)?shù),如果不是素?cái)?shù),則至少輸出它的一個(gè)非1因子MATLAB編程實(shí)例(I)31.求素?cái)?shù)輸入一個(gè)數(shù),判斷它是否是素?cái)?shù),如果不是素?cái)?shù),則至程序%求一個(gè)矩陣中的每個(gè)元素是否是奇數(shù),相當(dāng)于MATLAB的函數(shù)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%判斷單個(gè)數(shù)是否是奇數(shù)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編程實(shí)例(I)4程序%求一個(gè)矩陣中的每個(gè)元素是否是奇數(shù),相當(dāng)于MATLAB結(jié)果MATLAB編程實(shí)例(I)5結(jié)果MATLAB編程實(shí)例(I)52.計(jì)算稅率月收入稅率1600以下01600-21005%2100-360010%3600-660015%6600-2160020%21600-4160025%41600-6160030%61600-8160035%81600-10160040%101600以上45%MATLAB編程實(shí)例(I)62.計(jì)算稅率月收入稅率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編程實(shí)例(I)7salary=linspace(0,10000,20);結(jié)果MATLAB編程實(shí)例(I)8結(jié)果MATLAB編程實(shí)例(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編程實(shí)例(I)9程序2:查表法functionrevenues=get3.逆序存放數(shù)組給定一個(gè)數(shù)組,將其逆序存放,如:將

A=[12345679100]

變成

A=[10097654321]MATLAB編程實(shí)例(I)103.逆序存放數(shù)組給定一個(gè)數(shù)組,將其逆序存放,如:將

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函數(shù):rot90(rot90(A))或fliplr(A)%flipudMATLAB編程實(shí)例(I)11程序A=[1:79100]MATLAB函數(shù):MATL4.有序數(shù)組的插入已知A為一有序向量(由小到大排列),試將B依次插入至A中,使得A仍然有序,例如

A=[13459]

B=[26]

插入后A為

A=[123569]MATLAB編程實(shí)例(I)124.有序數(shù)組的插入已知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編程實(shí)例(I)13程序functionA=insert1(A,n)fu5.打印楊輝三角111121133114641151010511615201561MATLAB編程實(shí)例(I)145.打印楊輝三角1MATLAB編程實(shí)例(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編程實(shí)例(I)15程序functionyanhui2(n)function11112113311464115101051161520156117213535217118285670562881193684126126843691打印結(jié)果MATLAB編程實(shí)例(I)16打印結(jié)果MATLAB編程實(shí)例(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編程實(shí)例(I)176.打印矩陣的最小值及其位置function[vpos7.打印鞍點(diǎn)所謂矩陣的鞍點(diǎn),就是在矩陣中行上最小,列上最大的元素。如

鞍點(diǎn)為(3,3)21

9450174507762137858737921285486441022659952149031MATLAB編程實(shí)例(I)187.打印鞍點(diǎn)所謂矩陣的鞍點(diǎn),就是在矩陣中行上最小,列上最大程序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編程實(shí)例(I)19程序function[vpos]=saddle(A)8.求矩陣的所有K階子式給定一個(gè)M×N矩陣,試求出其所有K階子式MATLAB編程實(shí)例(I)208.求矩陣的所有K階子式給定一個(gè)M×N矩陣,試求出其所有K程序M=3;N=5;%生成一個(gè)M=3行N=5列

%有規(guī)律的矩陣%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編程實(shí)例(I)21程序M=3;functiondisp_rank_k(A課后練習(xí)題編寫高斯列主元消去法求線性方程組的解MATLAB編程實(shí)例(I)22課后練習(xí)題編寫高斯列主元消去法求線性方程組的解MATLABMATLAB編程實(shí)例(I)hjTang@MATLAB編程實(shí)例(I)23MATLAB編程實(shí)例(I)hjTang@xidian.ed目錄求素?cái)?shù)計(jì)算稅率逆序存放數(shù)組有序數(shù)組的插入打印楊輝三角打印矩陣的最小值打印鞍點(diǎn)求矩陣的所有K階子式MATLAB編程實(shí)例(I)24目錄求素?cái)?shù)MATLAB編程實(shí)例(I)21.求素?cái)?shù)輸入一個(gè)數(shù),判斷它是否是素?cái)?shù),如果不是素?cái)?shù),則至少輸出它的一個(gè)非1因子MATLAB編程實(shí)例(I)251.求素?cái)?shù)輸入一個(gè)數(shù),判斷它是否是素?cái)?shù),如果不是素?cái)?shù),則至程序%求一個(gè)矩陣中的每個(gè)元素是否是奇數(shù),相當(dāng)于MATLAB的函數(shù)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%判斷單個(gè)數(shù)是否是奇數(shù)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編程實(shí)例(I)26程序%求一個(gè)矩陣中的每個(gè)元素是否是奇數(shù),相當(dāng)于MATLAB結(jié)果MATLAB編程實(shí)例(I)27結(jié)果MATLAB編程實(shí)例(I)52.計(jì)算稅率月收入稅率1600以下01600-21005%2100-360010%3600-660015%6600-2160020%21600-4160025%41600-6160030%61600-8160035%81600-10160040%101600以上45%MATLAB編程實(shí)例(I)282.計(jì)算稅率月收入稅率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編程實(shí)例(I)29salary=linspace(0,10000,20);結(jié)果MATLAB編程實(shí)例(I)30結(jié)果MATLAB編程實(shí)例(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編程實(shí)例(I)31程序2:查表法functionrevenues=get3.逆序存放數(shù)組給定一個(gè)數(shù)組,將其逆序存放,如:將

A=[12345679100]

變成

A=[10097654321]MATLAB編程實(shí)例(I)323.逆序存放數(shù)組給定一個(gè)數(shù)組,將其逆序存放,如:將

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函數(shù):rot90(rot90(A))或fliplr(A)%flipudMATLAB編程實(shí)例(I)33程序A=[1:79100]MATLAB函數(shù):MATL4.有序數(shù)組的插入已知A為一有序向量(由小到大排列),試將B依次插入至A中,使得A仍然有序,例如

A=[13459]

B=[26]

插入后A為

A=[123569]MATLAB編程實(shí)例(I)344.有序數(shù)組的插入已知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編程實(shí)例(I)35程序functionA=insert1(A,n)fu5.打印楊輝三角111121133114641151010511615201561MATLAB編程實(shí)例(I)365.打印楊輝三角1MATLAB編程實(shí)例(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編程實(shí)例(I)37程序functionyanhui2(n)function11112113311464115101051161520156117213535217118285670562881193684126126843691打印結(jié)果MATLAB編程實(shí)例(I)38打印結(jié)果MATLAB編程實(shí)例(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編程實(shí)例(I)396.打印矩陣的最小值及其位置function[vpos7.打印鞍點(diǎn)所謂矩陣的鞍點(diǎn),就是在矩陣中行上最小,列上最大的元素。如

鞍點(diǎn)為(3,3)21

9450174507762

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論