第一篇:matlab習題
1.輸入20個數,求其中最大數和最小數。要求分別用循環結構和調用MATLAB的max函數、min函數來實現。a=rand(1,20);
max1=max(a)%用max函數求最大值
min1=min(a)%用max函數求最大值
%以下用循環方法求解:
max2=a(1);min2=a(1);for i=2:20 if a(i)>max2 max2=a(i);end
if a(i) end max2 min2 調用MATLAB的max函數、min函數來實現: >> a=rand(1,20)zuidazhi=max(a)zuixiaozhi=min(a) a = Columns 1 through 8 0.7513 0.2551 0.5060 0.6991 Columns 9 through 16 0.1493 0.2575 0.8407 0.2543 Columns 17 through 20 0.1966 0.2511 0.6160 0.4733 zuidazhi = 0.9593 zuixiaozhi = 0.8909 0.9593 0.8143 0.2435 0.5472 0.1386 0.9293 0.3500 0.1386 2.求Fibonacci數列 (1)大于4000的最小項。 (2)5000之內的項數。(1)function t=fibonacc1 f=[1,1];n=2;while 1 f=[f,f(n-1)+f(n)];n=length(f);if f(n)>4000 break;end end t=f(n);return (2)function n=fibonacc2 f=[1,1];n=2;while 1 f=[f,f(n-1)+f(n)];n=length(f);if f(n)>4000 break;end end n=n-1;return 3.寫出下列程序的輸出結果: s=0; a=[12,13,14;15,16,17;18,19,20;21,22,23]; for k=a for j=1:4 if rem(k(j),2)~=0 s=s+k(j); end end end ?2??1?A??0 S Ans=108 1、解方程組Ax=b,分別用求逆解法與直接解法求其解。 ?12?1000?12?10??0?0?,?1??0???b??0????? 0 ? 0?12?1???0?0 00?12?????0??A=[2-1 0 0 0;-1 2-1 0 0;0-1 2-1 0;0 0-1 2-1;0 0 0-1 2];b=[1;0;0;0;0];x=inv(A)*b 2、編一個m程序,求N階方陣A的行列式的值 function s=mydet(A)n=size(A); if(n(1)~=n(2)) return;end n=n(1);if(n==1)s=A; return;end s=0; for i=1:n s=s-(-1)^i*A(1,i)*mydet(A(2:n,[1:i-1 i+1:n]));end 3.今有多項式P1(x)=x4-2x+1,P2(x)=x2+4x-0.5,要求先求得P(x)=P1(x)+P2(x),然后計算xi=0.2*i各點上的P(xi)(i=0,1,2,…,5)值。p1=[1.0 0.0 0.0-2.0 1.0];p2=[0.0 0.0 1.0 4.0-0.5];p1x=poly2sym(p1);p2x=poly2sym(p2);p=p1x+p2x 4.試編一個m程序,將一維數組x中的N個數按顛倒的次序重新存儲。如N=5,原來x為: x=[ 1 ] 而經過顛倒處理后x中數據的次序應該為: x=[ 9 ] x=[ 1 3 5 7 9 ] xx=rot90(rot90(x)) 1.在[0 2π]范圍內繪制二維曲線圖y=sin(x)*cos(5x)。x = 0:pi/10:2*pi;y = sin(x).*cos(5*x)plot(x,y) 2.在[0 2π]范圍內繪制以Y軸為對數的二維曲線圖。 y=|1000sin(4x)|+1 x=linspace(0,2*pi,100);y=abs(1000*sin(4*x))+1;semilogy(x,y) 3.把自己姓名中的各個拼音字母(小寫)所對應的ASCII值轉換為二進制序列,并用二進制脈沖繪圖表示出來 mingzi='shaopengpeng';% b=dec2bin(int8(s))b=double(mingzi)c=dec2bin(b)c=c' stem(str2num(c(:)))Matlab介紹 MATLAB是matrix&laboratory兩個詞的組合,意為矩陣工廠(矩陣實驗室)。是由美國mathworks公司發布的主要面對科學計算、可視化以及交互式程序設計的高科技計算環境。它將數值分析、矩陣計算、科學數據可視化以及非線性動態系統的建模和仿真等諸多強大功能集成在一個易于使用的視窗環境中,為科學研究、工程設計以及必須進行有效數值計算的眾多科學領域提供了一種全面的解決方案,并在很大程度上擺脫了傳統非交互式程序設計語言(如C、Fortran)的編輯模式,代表了當今國際科學計算軟件的先進水平。 MATLAB是美國MathWorks公司出品的商業數學軟件,用于算法開發、數據可視化、數據分析以及數值計算的高級技術計算語言和交互式環境,主要包括MATLAB和Simulink兩大部分。MATLAB應用非常之廣泛! MATLAB和Mathematica、Maple并稱為三大數學軟件。它在數學類科技應用軟件中在數值計算方面首屈一指。MATLAB可以進行矩陣運算、繪制函數和數據、實現算法、創建用戶界面、連接其他編程語言的程序等,主要應用于工程計算、控制設計、信號處理與通訊、圖像處理、信號檢測、金融建模設計與分析等領域。 MATLAB的基本數據單位是矩陣,它的指令表達式與數學、工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,FORTRAN等語言完成相同的事情簡捷得多,并且MATLAB也吸收了像Maple等軟件的優點,使MATLAB成為一個強大的數學軟件。在新的版本中也加入了對C,FORTRAN,C++,JAVA的支持。可以直接調用,用戶也可以將自己編寫的實用程序導入到MATLAB函數庫中方便自己以后調用,此外許多的MATLAB愛好者都編寫了一些經典的程序,用戶直接進行下載就可以用。 優勢特點: 1)高效的數值計算及符號計算功能,能使用戶從繁雜的數學運算分析中解脫出來; 2)具有完備的圖形處理功能,實現計算結果和編程的可視化; 3)友好的用戶界面及接近數學表達式的自然化語言,使學者易于學習和掌握; 4)功能豐富的應用工具箱(如信號處理工具箱、通信工具箱等),為用戶提供了大量方便實用的處理工具。 習題 第三講 1.輸入20個數,求其中最大數和最小數。要求分別用循環結構和調用MATLAB的max函數、min函數來實現。 用循環結構的程序: >> a=[1 3 5-1 20 23-8 39-3 7-4-11 34-31 12 13 33-43-50 45] c=a(1);d=a(1);for n=1:20;if a(n)>c b=a(n);c=a(n);else b=c;end;end;for n=1:20;if a(n) 5-1 20 23-8 39-3 7-4-11 34-31 12 13 33 Columns 18 through 20 -43-50 45 結果 b = c = 調用MATLAB的max函數、min函數來實現:的程序 >> a=[1 3 5-1 20 23-8 39-3 7-4-11 34-31 12 13 33-43-50 45] b=max(a);d=min(a);b d 運行結果: a = Columns 1 through 17 5-1 20 23-8 39-3 7-4-11 34-31 12 13 33 Columns 18 through 20 -43-50 45 結果 b = d = 2.求Fibonacci數列 (1)大于4000的最小項。 (2)5000之內的項數。 3、寫出下列程序的輸出結果: s=0; a=[12,13,14;15,16,17;18,19,20;21,22,23]; for k=a for j=1:4 if rem(k(j),2)~=0 s=s+k(j); end end end s 運行結果: s= 108 第四章習題 1、解方程組Ax=b,分別用求逆解法與直接解法求其解。 ?? 2?1000?? ?12?100??1?A?? ? ? 0?12?10??b??0???? 00?12?1?, ??0? ??000?12??0?????0?? 2、編一個m程序,求N階方陣A的行列式的值。 3、今有多項式P1(x)=x4-2x+1,P2(x)=x2+4x-0.5,要求先求得P(x)=P1(x)+P2(x),然后計算xi=0.2*i各點上的P(xi)(i=0,1,2,…,5)值。 4.試編一個m程序,將一維數組x中的N個數按顛倒的次序重新存儲。如N=5,原來x為: x=[ 1 ] 而經過顛倒處理后x中數據的次序應該為: x=[ 9 ] 第五章習題 1.在[0 2π]范圍內繪制二維曲線圖y=sin(x)*cos(5x)。 x=0:pi/100:2*pi;y=sin(x).*cos(5*x);plot(x,y)10.80.60.40.20-0.2-0.4-0.6-0.8-101234567 2.在[0 2π]范圍內繪制以Y軸為對數的二維曲線圖。 y=|1000sin(4x)|+1 x=(0:0.01:2*pi); y=abs(1000*sin(4*x))+1;semilogy(x,y); ***00200001234567 3、把自己姓名中的各個拼音字母(小寫)所對應的ASCII值轉換為二進制序列,并用二進制脈沖繪圖表示出來 a='shaopengpeng';b=dec2bin(a);stem(str2num(b(:))) 心得體會 Matlab是一個強大的數學工具,它的應用廣泛,涉及到各個領域.它使用起來十分方便,不用麻煩去定義變量.它的繪圖能力很強,甚至可以模擬出三維視圖.矩陣是它應用的核心,許多工程繁瑣的運算都需要靠矩陣來化簡,這正是它的生命力所在.但是,他的函數很多,開始學時記的比較痛苦,我已經深深感覺到了.不過看多了也就熟了,感覺和學五筆差不多.它的語法簡單,像我學過C語言的學起來還是蠻容易的.它的數組定義十分符合自然,是從1開始的,數組元素的調用也很接近數學的表達.此外,函數的名字也很符合英文規則,反正我用得很開心就是了.9 通過學習matlab,我又一次鍛煉了自己的思維.它學起來得心應手也讓我明白了學習一門語言(c語言)對學習其他語言的幫助指導作用.同時,它也加強了我理論聯系實際的能力.這是一個專業課的基礎工具,學好它是必要的 汽車理論課后習題Matlab程序 1.3 確定一輕型貨車的動力性能(貨車可裝用4擋或5擋變速器,任選 其中的一種進行整車性能計算): 1)繪制汽車驅動力與行駛阻力平衡圖。 2)求汽車最高車速,最大爬坡度及克服該坡度時相應的附著率。 3)繪制汽車行駛加速度倒數曲線,用圖解積分法求汽車用2檔起步加速行駛至70km/h的車速-時間曲線,或者用計算機求汽車用2檔起步加速行駛至70km/h的加速時間。 輕型貨車的有關數據: 汽油發動機使用外特性的Tq-n曲線的擬合公式為 式中,Tq為發動機轉矩(N?m);n為發動機轉速(r/min)。 發動機的最低轉速nmin=600r/min,最高轉速nmax=4000r/min。 裝載質量 2000kg 整車整備質量 1800kg 總質量 3880kg 車輪半徑 0.367m 傳動系機械效率 ηt=0.85 滾動阻力系數 f=0.013 空氣阻力系數×迎風面積 CDA=2.77m2 主減速器傳動比 i0=5.83 飛輪轉動慣量 If=0.218kg?m2 二前輪轉動慣量 Iw1=1.798kg?m2 四后輪轉動慣量 Iw2=3.598kg?m2 變速器傳動比 ig(數據如下表) Ⅰ檔 Ⅱ檔 Ⅲ檔 Ⅳ檔 Ⅴ檔 四檔變速器 6.09 3.09 1.71 1.00 五檔變速器 5.56 2.769 1.644 1.00 0.793 軸距 L=3.2m 質心至前軸距離(滿載) a=1.974m 質心高(滿載) hg=0.9m 解:Matlab程序: (1) 求汽車驅動力與行駛阻力平衡圖和汽車最高車速程序: n=[600:10:4000]; Tq=-19.313+295.27*(n/1000)-165.44*(n/1000).^2+40.874*(n/1000).^3-3.8445*(n/1000).^4; m=3880;g=9.8;nmin=600;nmax=4000; G=m*g; ig=[5.56 2.769 1.644 1.00 0.793];nT=0.85;r=0.367;f=0.013;CDA=2.77;i0=5.83; L=3.2;a=1.947;hg=0.9;If=0.218;Iw1=1.798;Iw2=3.598; Ft1=Tq*ig(1)*i0*nT/r; Ft2=Tq*ig(2)*i0*nT/r; Ft3=Tq*ig(3)*i0*nT/r; Ft4=Tq*ig(4)*i0*nT/r; Ft5=Tq*ig(5)*i0*nT/r; ua1=0.377*r*n/ig(1)/i0; ua2=0.377*r*n/ig(2)/i0; ua3=0.377*r*n/ig(3)/i0; ua4=0.377*r*n/ig(4)/i0; ua5=0.377*r*n/ig(5)/i0; ua=[0:5:120]; Ff=G*f; Fw=CDA*ua.^2/21.15; Fz=Ff+Fw; plot(ua1,Ft1,ua2,Ft2,ua3,Ft3,ua4,Ft4,ua5,Ft5,ua,Fz); title('驅動力-行駛阻力平衡圖'); xlabel('ua(km/s)'); ylabel('Ft(N)'); gtext('Ft1'),gtext('Ft2'),gtext('Ft3'),gtext('Ft4'),gtext('Ft5'),gtext('Ff+Fw'); zoom on; [x,y]=ginput(1); zoom off; disp('汽車最高車速=');disp(x);disp('km/h'); 汽車最高車速= 99.3006 km/h (2)求汽車最大爬坡度程序: n=[600:10:4000]; Tq=-19.313+295.27*(n/1000)-165.44*(n/1000).^2+40.874*(n/1000).^3-3.8445*(n/1000).^4; m=3880;g=9.8;nmin=600;nmax=4000; G=m*g; ig=[5.56 2.769 1.644 1.00 0.793];nT=0.85;r=0.367;f=0.013;CDA=2.77;i0=5.83; L=3.2;a=1.947;hg=0.9;If=0.218;Iw1=1.798;Iw2=3.598; Ft1=Tq*ig(1)*i0*nT/r; ua1=0.377*r*n/ig(1)/i0; Ff=G*f; Fw1=CDA*ua1.^2/21.15; Fz1=Ff+Fw1; Fi1=Ft1-Fz1; Zoom on; imax=100*tan(asin(max(Fi1/G))); disp('汽車最大爬坡度='); disp(imax); disp('%'); 汽車最大爬坡度= 35.2197% (3)求最大爬坡度相應的附著率和求汽車行駛加速度倒數曲線程序: clear n=[600:10:4000]; Tq=-19.313+295.27*(n/1000)-165.44*(n/1000).^2+40.874*(n/1000).^3-3.8445*(n/1000).^4; m=3880;g=9.8;nmin=600;nmax=4000; G=m*g; ig=[5.56 2.769 1.644 1.00 0.793];nT=0.85;r=0.367;f=0.013;CDA=2.77;i0=5.83; L=3.2;a=1.947;hg=0.9;If=0.218;Iw1=1.798;Iw2=3.598; Ft1=Tq*ig(1)*i0*nT/r; Ft2=Tq*ig(2)*i0*nT/r; Ft3=Tq*ig(3)*i0*nT/r; Ft4=Tq*ig(4)*i0*nT/r; Ft5=Tq*ig(5)*i0*nT/r; ua1=0.377*r*n/ig(1)/i0; ua2=0.377*r*n/ig(2)/i0; ua3=0.377*r*n/ig(3)/i0; ua4=0.377*r*n/ig(4)/i0; ua5=0.377*r*n/ig(5)/i0; Fw1=CDA*ua1.^2/21.15; Fw2=CDA*ua2.^2/21.15; Fw3=CDA*ua3.^2/21.15; Fw4=CDA*ua4.^2/21.15; Fw5=CDA*ua5.^2/21.15; Ff=G*f; deta1=1+(Iw1+Iw2)/(m*r^2)+(If*ig(1)^2*i0^2*nT)/(m*r^2); deta2=1+(Iw1+Iw2)/(m*r^2)+(If*ig(2)^2*i0^2*nT)/(m*r^2); deta3=1+(Iw1+Iw2)/(m*r^2)+(If*ig(3)^2*i0^2*nT)/(m*r^2); deta4=1+(Iw1+Iw2)/(m*r^2)+(If*ig(4)^2*i0^2*nT)/(m*r^2); deta5=1+(Iw1+Iw2)/(m*r^2)+(If*ig(5)^2*i0^2*nT)/(m*r^2); a1=(Ft1-Ff-Fw1)/(deta1*m);ad1=1./a1; a2=(Ft2-Ff-Fw2)/(deta2*m);ad2=1./a2; a3=(Ft3-Ff-Fw3)/(deta3*m);ad3=1./a3; a4=(Ft4-Ff-Fw4)/(deta4*m);ad4=1./a4; a5=(Ft5-Ff-Fw5)/(deta5*m);ad5=1./a5; plot(ua1,ad1,ua2,ad2,ua3,ad3,ua4,ad4,ua5,ad5); axis([0 0 10]); title('汽車的加速度倒數曲線'); xlabel('ua(km/h)'); ylabel('1/a'); gtext('1/a1');gtext('1/a2');gtext('1/a3');gtext('1/a4');gtext('1/a5'); a=max(a1); af=asin(max(Ft1-Ff-Fw1)/G); C=tan(af)/(a/L+hg*tan(af)/L); disp('假設后輪驅動,最大爬坡度相應的附著率='); disp(C); 假設后輪驅動,最大爬坡度相應的附著率= 0.4219 (4) >>clear nT=0.85;r=0.367;f=0.013;CDA=2.77;i0=5.83;If=0.218; Iw1=1.798;Iw2=3.598;L=3.2;a=1.947;hg=0.9;m=3880;g=9.8; G=m*g; ig=[5.56 2.769 1.644 1.00 0.793]; nmin=600;nmax=4000; u1=0.377*r*nmin./ig/i0; u2=0.377*r*nmax./ig/i0; deta=0*ig; for i=1:5 deta(i)=1+(Iw1+Iw2)/(m*r^2)+(If*(ig(i))^2*i0^2*nT)/(m*r^2); end ua=[6:0.01:99];N=length(ua);n=0;Tq=0;Ft=0;inv_a=0*ua;delta=0*ua; Ff=G*f; Fw=CDA*ua.^2/21.15; for i=1:N k=i; if ua(i)<=u2(2) n=ua(i)*(ig(2)*i0/r)/0.377; Tq=-19.313+295.27*(n/1000)-165.44*(n/1000)^2+40.874*(n/1000)^3-3.8445*(n/1000)^4; Ft=Tq*ig(2)*i0*nT/r; inv_a(i)=(deta(2)*m)/(Ft-Ff-Fw(i)); delta(i)=0.01*inv_a(i)/3.6; elseif ua(i)<=u2(3) n=ua(i)*(ig(3)*i0/r)/0.377; Tq=-19.313+295.27*(n/1000)-165.44*(n/1000)^2+40.874*(n/1000)^3-3.8445*(n/1000)^4; Ft=Tq*ig(3)*i0*nT/r; inv_a(i)=(deta(3)*m)/(Ft-Ff-Fw(i)); delta(i)=0.01*inv_a(i)/3.6; elseif ua(i)<=u2(4) n=ua(i)*(ig(4)*i0/r)/0.377; Tq=-19.313+295.27*(n/1000)-165.44*(n/1000)^2+40.874*(n/1000)^3-3.8445*(n/1000)^4; Ft=Tq*ig(4)*i0*nT/r; inv_a(i)=(deta(4)*m)/(Ft-Ff-Fw(i)); delta(i)=0.01*inv_a(i)/3.6; else n=ua(i)*(ig(5)*i0/r)/0.377; Tq=-19.313+295.27*(n/1000)-165.44*(n/1000)^2+40.874*(n/1000)^3-3.8445*(n/1000)^4; Ft=Tq*ig(5)*i0*nT/r; inv_a(i)=(deta(5)*m)/(Ft-Ff-Fw(i)); delta(i)=0.01*inv_a(i)/3.6; end a=delta(1:k); t(i)=sum(a); end plot(t,ua); axis([0 0 100]); title('汽車2檔原地起步換擋加速時間曲線'); xlabel('時間t(s)'); ylabel('速度ua(km/h)'); >> ginput ans = 25.8223 70.0737 25.7467 70.0737 所以汽車2檔原地起步換擋加速行駛至70km/h的加速時間約為25.8s 2.7已知貨車裝用汽油發動機的負荷特性與萬有特性。負荷特性曲線的擬合公式為: 其中,b為燃油消耗率[g/(kW?h)];Pe為發動機凈功率(kW);擬合式中的系數隨轉速n變化。怠速油耗(怠速轉速400r/min)。 計算與繪制題1.3中貨車的1)汽車功率平衡圖。 2)最高檔與次高檔的等速百公里油耗曲線。或利用計算機求貨車按JB3352-83規定的六工況循環行駛的百公里油耗。計算中確定燃油消耗值b時,若發動機轉速與負荷特性中給定的轉速不相等,可由相鄰轉速的兩根曲線用插值法求得。 解:Matlab程序: (1) 汽車功率平衡圖程序: clear n=[600:10:4000]; Tq=-19.313+295.27*(n/1000)-165.44*(n/1000).^2+40.874*(n/1000).^3-3.8445*(n/1000).^4; m=3880;g=9.8; G=m*g; ig=[5.56 2.769 1.644 1.00 0.793]; nT=0.85;r=0.367;f=0.013;CDA=2.77;i0=5.83; L=3.2;a=1.947;hg=0.9;If=0.218;Iw1=1.798;Iw2=3.598; ua1=0.377*r*n/ig(1)/i0; ua2=0.377*r*n/ig(2)/i0; ua3=0.377*r*n/ig(3)/i0; ua4=0.377*r*n/ig(4)/i0; ua5=0.377*r*n/ig(5)/i0; Pe1=Tq.*ig(1)*i0.*ua1./(3600*r); Pe2=Tq.*ig(2)*i0.*ua2./(3600*r); Pe3=Tq.*ig(3)*i0.*ua3./(3600*r); Pe4=Tq.*ig(4)*i0.*ua4./(3600*r); Pe5=Tq.*ig(5)*i0.*ua5./(3600*r); ua=[0:0.35:119]; Ff=G*f; Fw=CDA*ua.^2/21.15; Pf=Ff*ua/3600; Pw=Fw.*ua/3600; Pe0=(Pf+Pw)./nT; Pe=max(Pe1); plot(ua1,Pe1,ua2,Pe2,ua3,Pe3,ua4,Pe4,ua5,Pe5,ua,Pe0,ua,Pe); axis([0 119 0 100]); title('汽車功率平衡圖'); xlabel('ua(km/h)'); ylabel('Pe(kw)'); gtext('1'),gtext('2'),gtext('3'),gtext('4'),gtext('5'),gtext('(Pf+Pw)/et'),gtext('Pe'); (2)最高檔與次高檔的等速百公里油耗曲線程序: clear n=600:1:4000; m=3880;g=9.8; G=m*g; ig=[5.56 2.769 1.644 1.00 0.793]; nT=0.85;r=0.367;f=0.013;CDA=2.77;i0=5.83; L=3.2;a=1.947;hg=0.9;If=0.218;Iw1=1.798;Iw2=3.598; n0=[815 1207 1614 2012 2603 3006 3403 3804]; B00=[1326.8 1354.7 1284.4 1122.9 1141.0 1051.2 1233.9 1129.7]; B10=[-416.46 -303.98 -189.75 -121.59 -98.893 -73.714 -84.478 -45.291]; B20=[72.379 36.657 14.524 7.0035 4.4763 2.8593 2.9788 0.71113]; B30=[-5.8629 -2.0553 -0.51184 -0.18517 -0.091077 -0.05138 -0.047449 -0.00075215]; B40=[0.17768 0.043072 0.0068164 0.0018555 0.00068906 0.00035032 0.00028230 -0.000038568]; B0=spline(n0,B00,n); B1=spline(n0,B10,n); B2=spline(n0,B20,n); B3=spline(n0,B30,n); B4=spline(n0,B40,n); Ff=G*f; ua4=0.377*r*n/ig(4)/i0; ua5=0.377*r*n/ig(5)/i0; Fz4=Ff+CDA*(ua4.^2)/21.15; Fz5=Ff+CDA*(ua5.^2)/21.15; Pe4=Fz4.*ua4./(nT*3.6*1000); Pe5=Fz5.*ua5./(nT*3.6*1000); for i=1:1:3401 b4(i)=B0(i)+B1(i)*Pe4(i)+B2(i)*Pe4(i).^2+B3(i)*Pe4(i).^3+B4(i)*Pe4(i).^4; b5(i)=B0(i)+B1(i)*Pe5(i)+B2(i)*Pe5(i).^2+B3(i)*Pe5(i).^3+B4(i)*Pe5(i).^4; end pg=7.0; Q4=Pe4.*b4./(1.02.*ua4.*pg); Q5=Pe5.*b5./(1.02.*ua5.*pg); plot(ua4,Q4,ua5,Q5); axis([0 30]); title('最高檔與次高檔等速百公里油耗曲線'); xlabel('ua(km/h)'); ylabel('百公里油耗(L/100km)'); gtext('4'),gtext('5'); 3.1改變1.3題中輕型貨車的主減速器傳動比,做出為5.17、5.43、5.83、6.17、6.33時的燃油經濟性—加速時間曲線,討論不同值對汽車性能的影響。 解:Matlab程序: 主程序: i0=[5.17,5.43,5.83,6.17,6.33]; %輸入主傳動比的數據 for i=1:1:5 y(i)=jiasushijian(i0(i)); %求加速時間 end y; for i=1:1:5 b(i)=youhao(i0(i)); %求對應i0的六工況百公里油耗 end b; plot(b,y,'+r') hold on b1=linspace(b(1),b(5),100); y1=spline(b,y,b1); %三次樣條插值 plot(b1,y1); %繪制燃油經濟性-加速時間曲線 title('燃油經濟性—加速時間曲線'); xlabel('百公里油耗(L/100km)'); ylabel('加速時間s'); gtext('i0=5.17'),gtext('i0=5.43'),gtext('i0=5.83'),gtext('i0=6.17'),gtext('i0=6.33'); 子程序: (1) function y=jiasushijian(i0) %求加速時間的處理函數 n1=linspace(0,5000); %先求各個檔位的驅動力 nmax=4000;nmin=600;r=0.367;yita=0.85;CDA=2.77;f=0.013;G=(3880)*9.8;ig=[6.09,3.09,1.71,1.00];%i0=5.83 for i=1:1:4 %i為檔數 uamax(i)=chesu(nmax,r,ig(i),i0); %計算各個檔位的最大速度與最小速度 uamin(i)=chesu(nmin,r,ig(i),i0); ua(i,:)=linspace(uamin(i),uamax(i),100); n(i,:)=zhuansu(ua(i,:),r,ig(i),i0); %計算各個檔位的轉速范圍 Ttq(i,:)=zhuanju(n(i,:)); %求出各檔位的轉矩范圍 Ft(i,:)=qudongli(Ttq(i,:),ig(i),i0,yita,r); %求出驅動力 F(i,:)=f*G+CDA*(ua(i,:).^2)/21.15; %求出滾動阻力和空氣阻力的和 delta(i,:)=1+(1.798+3.598+0.218*(ig(i)^2)*(i0^2)*yita)/(3880*r^2); %求轉動質量換算系數 a(i,:)=1./(delta(i,:).*3880./(Ft(i,:)-F(i,:))); %求出加速度 F2(i,:)=Ft(i,:)-F(i,:); end %下面分各個檔位進行積分,求出加速時間 temp1(1,:)=ua(2,:)/3.6; temp1(2,:)=1./a(2,:); n1=1; for j1=1:1:100 if ua(3,j1)>max(ua(2,:))&&ua(3,j1)<=70 temp2(1,n1)=ua(3,j1)/3.6; temp2(2,n1)=1./a(3,j1); n1=n1+1; end end n2=1; for j1=1:1:100 if ua(4,j1)>max(ua(3,:))&&ua(4,j1)<=70; temp3(1,n2)=ua(4,j1)/3.6; temp3(2,n2)=1./a(4,j1); n2=n2+1; end end y=temp1(1,1)*temp1(2,1)+qiuji(temp1(1,:),temp1(2,:))+qiuji(temp2(1,:),temp2(2,:))+qiuji(temp3(1,:),temp3(2,:)); end (2) function ua=chesu(n,r,ig,i0); %由轉速計算車速 ua=0.377*r.*n/(ig*i0); (3) function n=zhuansu(ua,r,ig,i0); %求轉速 n=ig*i0.*ua./(0.377*r); end (4) function y=zhuanju(n); %求轉矩函數 y=-19.313+295.27.*(n./1000)-165.44.*(n./1000).^2+40.874.*(n./1000).^3-3.8445.*(n./1000).^4; (5) function y=qudongli(Ttq,ig,i0,yita,r); %求驅動力函數 y=(ig*i0*yita.*Ttq)/r; end (6) function p=qiuji(x0,y0) %求積分函數 n0=size(x0); n=n0(2); x=linspace(x0(1),x0(n),200) ; y=spline(x0,y0,x); %插值 % figure;plot(x,y); p=trapz(x,y) ; end (7) %求不同i0下的六工況油耗 function b=youhao(i0); global f G CDA yita m r If Iw1 Iw2 pg B0 B1 B2 B3 B4 n %聲明全局變量 ig=[6.09,3.09,1.71,1.00];r=0.367; yita=0.85;CDA=2.77;f=0.013;%i0=5.83; G=(3880)*9.8;If=0.218;Iw1=1.798;Iw2=3.598;m=3880; %汽車的基本參數設定 n0=[815 1207 1614 2012 2603 3006 3403 3804]; B00=[1326.8 1354.7 1284.4 1122.9 1141.0 1051.2 1233.9 1129.7]; B10=[-416.46 -303.98 -189.75 -121.59 -98.893 -73.714 -84.478 -45.291]; B20=[72.379 36.657 14.524 7.0035 4.4763 2.8593 2.9788 0.71113]; B30=[-5.8629 -2.0553 -0.51184 -0.18517 -0.091077 -0.05138 -0.047449 -0.00075215]; B40=[0.17768 0.043072 0.0068164 0.0018555 0.00068906 0.00035032 0.00028230 -0.000038568]; n=600:1:4000; B0=spline(n0,B00,n); B1=spline(n0,B10,n); B2=spline(n0,B20,n); %使用三次樣條插值,保證曲線的光滑連續 B3=spline(n0,B30,n); B4=spline(n0,B40,n); ua4=0.377*r.*n./(i0*ig(4)); %求出發動機轉速范圍內對應的III、IV檔車速 F4=f*G+CDA*(ua4.^2)/21.15; %求出滾動阻力和空氣阻力的和 P_fw4=F4.*ua4./(yita*3.6*1000); %求出阻力功率 for i=1:1:3401 %用擬合公式求出各個燃油消耗率 b4(i)=B0(i)+B1(i)*P_fw4(i)+B2(i)*(P_fw4(i))^2+B3(i)*(P_fw4(i))^3+B4(i)*(P_fw4(i))^4; end pg=7.06; %汽油的重度取7.06N/L ua4_m=[25,40,50]; %勻速階段的車速 s_m=[50,250,250]; %每段勻速走過的距離 b4_m=spline(ua4,b4,ua4_m); %插值得出對應速度的燃油消耗率 F4_m=f*G+CDA*(ua4_m.^2)/21.15; %車速對應的阻力 P_fw4_m=F4_m.*ua4_m./(yita*3.6*1000); %發動機功率 Q4_m=P_fw4_m.*b4_m.*s_m./(102.*ua4_m.*pg) ; Q4_a1=jiasu(40,25,ig(4),0.25,ua4,i0); Q4_a2=jiasu(50,40,ig(4),0.2,ua4,i0); Qid=0.299;tid=19.3;s=1075; Q_i=Qid*tid; %求出減速階段的燃油消耗量 Q4all=(sum(Q4_m)+Q4_a1+Q4_a2+Q_i)*100/s; %IV檔六工況百公里燃油消耗量 b=Q4all; (8)加速階段處理函數 function q=jiasu(umax,umin,ig,a,ua0,i0); global f G CDA yita m r If Iw1 Iw2 pg B0 B1 B2 B3 B4 n; %i0 ; ua1=umin:1:umax; %把速度范圍以1km/h為間隔進行劃分 delta=1+(Iw1+Iw2)/(m*r^2)+(If*ig^2*i0^2*yita)/(m*r^2); P0=(G*f.*ua0./3600+CDA.*ua0.^3/76140+(delta*m.*ua0/3600)*a)/yita; P=(G*f.*ua1/3600+CDA.*ua1.^3/76140+(delta*m.*ua1/3600)*a)/yita; dt=1/(3.6*a) ; %速度每增加1km/h所需要的時間 for i=1:1:3401 %重新利用擬合公式求出b與ua的關系 b0(i)=B0(i)+B1(i)*P0(i)+B2(i)*(P0(i))^2+B3(i)*(P0(i))^3+B4(i)*(P0(i))^4; end b1=interp1(ua0,b0,ua1); %插值出各個速度節點的燃油消耗率 Qt=P.*b1./(367.1.*pg); %求出各個速度節點的燃油消耗率 i1=size(Qt); i=i1(2); Qt1=Qt(2:i-1); q=(Qt(1)+Qt(i))*dt./2+sum(Qt1)*dt; %求該加速階段的燃油消耗量 4.3一中型貨車裝有前后制動器分開的雙管路制動系,其有關參數如下: 載荷 質量(kg) 質心高hg/m 軸距L/m 質心至前軸距離a/m 制動力分配系數β 空載 4080 0.845 3.950 2.100 0.38 滿載 9290 1.170 3.950 2.950 0.38 1) 計算并繪制利用附著系數曲線和制動效率曲線 2) 求行駛車速Ua=30km/h,在=0.80路面上車輪不抱死的制動距離。計算時取制動系反應時間=0.02s,制動減速度上升時間=0.02s。 3) 求制動系前部管路損壞時汽車的制動距離s,制動系后部管路損壞時汽車的制動距離。 解:Matlab程序: (1) 求利用附著系數曲線和制動效率曲線程序: clear k=4080;hgk=0.845;Lk=3.950;ak=2.10;betak=0.38;bk=Lk-ak;%空載時的參數 mm=9290;hgm=1.170;Lm=3.950;am=2.950;betam=0.38;bm=Lm-am;%滿載時的參數 z=0:0.01:1.0; figure(1); fai=z; fai_fk=betak*z*Lk./(bk+z*hgk);%空載時前軸的φf fai_fm=betam*z*Lm./(bm+z*hgm);%滿載時前軸的φf fai_rk=(1-betak)*z*Lk./(ak-z*hgk);%空載時后軸的φr fai_rm=(1-betam)*z*Lm./(am-z*hgm);%滿載時后軸的φr plot(z,fai_fk,'b--',z,fai_fm,'r',z,fai_rk,'b--',z,fai_rm,'r',z,fai,'k'); title('利用附著系數與制動強度的關系曲線'); xlabel('制動強度(z/g)'); ylabel('利用附著系數φ'); gtext('φr(空載)'),gtext('φr(滿載)'),gtext('φ=z'),gtext('φf(空載)'),gtext('φf(滿載)'); figure(2); Efk=z./fai_fk*100;%空載時前軸的制動效率 Efm=z./fai_fm*100; Erk=z./fai_rk*100; Erm=z./fai_rm*100; plot(fai_fk,Efk,'b',fai_fm,Efm,'r',fai_rk,Erk,'b',fai_rm,Erm,'r'); axis([0 0 100]); title('前.后制動效率曲線'); xlabel('附著系數φ'); ylabel('制動效率%'); gtext('Ef'),gtext('Er'),gtext('Er'),gtext('滿載'),gtext('空載'); (2) 問和(3)問程序: clear mk=4080;hgk=0.845;Lk=3.950;ak=2.10;betak=0.38;bk=Lk-ak;%空載時的參數 mm=9290;hgm=1.170;Lm=3.950;am=2.950;betam=0.38;bm=Lm-am;%滿載時的參數 z=0:0.01:1; fai_fk=betak*z*Lk./(bk+z*hgk);%空載時前軸的φf fai_fm=betam*z*Lm./(bm+z*hgm);%滿載時前軸的φf fai_rk=(1-betak)*z*Lk./(ak-z*hgk);%空載時后軸的φr fai_rm=(1-betam)*z*Lm./(am-z*hgm);%滿載時后軸的φr Efk=z./fai_fk*100;%空載時前軸的制動效率 Efm=z./fai_fm*100; Erk=z./fai_rk*100; Erm=z./fai_rm*100; t1=0.02;t2=0.02;ua0=30;fai=0.80;g=9.8; ak1=Erk(81)*g*fai/100; am1=Erm(81)*g*fai/100; Sk1=(t1+t2/2)*ua0/3.6+ua0^2/(25.92*ak1);%制動距離 Sm1=(t1+t2/2)*ua0/3.6+ua0^2/(25.92*am1); disp('空載時,汽車制動距離Sk1='); disp(Sk1); disp('滿載時,汽車制動距離Sm1='); disp(Sm1); ak2=fai*g*ak/(Lk+fai*hgk); am2=fai*g*am/(Lm+fai*hgm); ak3=fai*g*bk/(Lk-fai*hgk); am3=fai*g*bm/(Lk-fai*hgm); Sk2=(t1+t2/2)*ua0/3.6+ua0^2/(25.92*ak2);%制動距離 Sm2=(t1+t2/2)*ua0/3.6+ua0^2/(25.92*am2); Sk3=(t1+t2/2)*ua0/3.6+ua0^2/(25.92*ak3); Sm3=(t1+t2/2)*ua0/3.6+ua0^2/(25.92*am3); disp('空載時,前制動器損壞,汽車制動距離Sk2='); disp(Sk2); disp('滿載時,前制動器損壞,汽車制動距離Sm2='); disp(Sm2); disp('空載時,后制動器損壞,汽車制動距離Sk3='); disp(Sk3); disp('滿載時,后制動器損壞,汽車制動距離Sm3='); disp(Sm3); 空載時,汽車制動距離Sk1= 7.8668 滿載時,汽車制動距離Sm1= 5.6354 空載時,前制動器損壞,汽車制動距離Sk2= 10.0061 滿載時,前制動器損壞,汽車制動距離Sm2= 7.5854 空載時,后制動器損壞,汽車制動距離Sk3= 8.0879 滿載時,后制動器損壞,汽車制動距離Sm3= 13.5986 5.11二自由度轎車模型的有關參數如下: 總質量 m=1818.2kg 繞Oz軸轉動慣量 軸距 L=3.048m 質心至前軸距離 a=1.463m 質心至后軸距離 b=1.585m 前輪總側偏剛度 k1=-62618N/rad 后輪總側偏剛度 k2=-110185N/rad 轉向系總傳動比 i=20 試求: 1) 穩定性因數K、特征車速uch。 2) 穩態橫擺角速度增益曲線、車速u=22.35m/s時的轉向靈敏度。 3) 靜態儲備系數S.M.,側向加速度為0.4g時的前、后輪側偏角絕對值之差與轉彎半徑的比值R/R0(R0=15m)。 4) 車速u=30.56m/s時,瞬態響應的橫擺角速度波動的固有(圓)頻率、阻尼比、反應時間與峰值反應時間 解:Matlab程序: m=1818.2;Iz=3885;L=3.048;a=1.463;b=1.585;k1=-62618;k2=-110185; i=20;g=9.8;R0=15;u1=30.56; K=m*(a/k2-b/k1)/L^2; Uch=(1/K)^(1/2);%特征車速 disp('穩定性因數(s^2/m^2)K='); disp(K); disp('特征車速(m/s)Uch='); disp(Uch); u=0:0.05:30; S=u./(L*(1+K*u.^2));%穩態橫擺角速度增益 plot(u,S); title('汽車穩態橫擺角速度增益曲線'); xlabel('車速u(m/s)'); ylabel('穩態橫擺角速度增益'); disp('u=22.35m/s時,轉向靈敏度為'); disp(S(448)); SM=k2/(k1+k2)-a/L; ay=0.4*g; A=K*ay*L; B=L/R0; R=L/(B-A); C=R/R0;%轉彎半徑比 disp('靜態儲備系數S.M.='); disp(SM); disp('側向加速度為0.4g時前、后輪側偏角絕對值之差(rad) a1-a2='); disp(A); disp('側向加速度為0.4g時轉彎半徑比值R/R0='); disp(C); W0=L/u1*(k1*k2/(m*Iz)*(1+K*u1^2))^(1/2);%固有(圓)頻率 D=(-m*(k1*a^2+k2*b^2)-Iz*(k1+k2))/(2*L*(m*Iz*k1*k2*(1+K*u1^2))^(1/2));%阻尼比 t=atan((1-D^2)^(1/2)/(-m*u1*a*W0/(L*k2)-D))/(W0*(1-D^2)^(1/2));%反應時間 E=atan((1-D^2)^(1/2)/D)/(W0*(1-D^2)^(1/2))+t;%峰值反應時間 disp('車速u=30.56m/s時的瞬態響應參數分別為:'); disp('橫擺角速度波動的固有(圓)頻率(rad)為 '); disp(W0); disp('阻尼比為'); disp(D); disp('反應時間(s)為'); disp(t); disp('峰值反應時間(s)為'); disp(E); 穩定性因數(s^2/m^2)K= 0.0024 特征車速(m/s)Uch= 20.6053 u=22.35m/s時,轉向靈敏度為 3.3690 靜態儲備系數S.M.= 0.1576 側向加速度為0.4g時前、后輪側偏角絕對值之差(rad) a1-a2= 0.0281 側向加速度為0.4g時轉彎半徑比值R/R0= 1.1608 車速u=30.56m/s時的瞬態響應參數分別為: 橫擺角速度波動的固有(圓)頻率(rad)為 5.5758 阻尼比為 0.5892 反應時間(s)為 0.1811 峰值反應時間(s)為 0.3899 6.5車身-車輪雙質量系統參數:。 “人體-座椅”系統參數:。車速,路面不平度系數,參考空間頻率n0=0.1m-1。 計算時頻率步長,計算頻率點數。 1) 計算并畫出幅頻特性、、和均方根值譜、、譜圖。進一步計算值 2) 改變“人體-座椅”系統參數:。分析值隨的變化。 3) 分別改變車身-車輪雙質量系統參數:。繪制三個響應量均方根值隨以上四個系統參數變化的曲線。 解:Matlab程序 (1)問 yps=0.25;%阻尼比ζ gama=9;%剛度比γ mu=10;%質量比μ fs=3;ypss=0.25;g=9.8;a0=10^(-6);f0=1.5; ua=20;Gqn0=2.56*10^(-8);n0=0.1;detaf=0.2;N=180; f=detaf*[0:N];lamta=f/f0;lamtas=f/fs;Wf=0*f; deta=((1-lamta.^2).*(1+gama-1/mu*lamta.^2)-1).^2+4*yps^2*lamta.^2.*(gama-(1/mu+1)*lamta.^2).^2; z1_q=gama*sqrt(((1-lamta.^2).^2+4*yps^2*lamta.^2)./deta); z2_z1=sqrt((1+4*yps^2*lamta.^2)./((1-lamta.^2).^2+4*yps^2*lamta.^2)); p_z2=sqrt((1+(2*ypss*lamtas).^2)./((1-lamtas.^2).^2+(2*ypss*lamtas).^2)); z2_q=gama*sqrt((1+4*yps^2*lamta.^2)./deta); p_q=p_z2.*z2_q; jfg_Gqddf=4*pi^2*sqrt(Gqn0*n0^2*ua)*f; jfg_Gzdd1f=z1_q.*jfg_Gqddf; jfg_Gzdd2f=z2_q.*jfg_Gqddf; jfg_Gaf=p_q.*jfg_Gqddf; sigmaqdd=sqrt(trapz(f,jfg_Gqddf.^2));%路面不平度加速度均方根值 sigmazdd1=sqrt(trapz(f,jfg_Gzdd1f.^2));%車輪加速度均方根值 sigmazdd2=sqrt(trapz(f,jfg_Gzdd2f.^2));%車身加速度均方根值 sigmaa=sqrt(trapz(f,jfg_Gaf.^2));%人體加速度均方根值 for i=1:(N+1) if f(i)<=2 Wf(i)=0.5; elseif f(i)<=4 Wf(i)=f(i)/4; elseif f(i)<=12.5 Wf(i)=1; else Wf(i)=12.5/f(i); end end kk=Wf.^2.*jfg_Gaf.^2; aw=sqrt(trapz(f,kk));%加權加速度均方根值 Law=20*log10(aw/a0);%加權振級 disp('路面不平度加速度均方根值為');disp(sigmaqdd); disp('車輪加速度均方根值為');disp(sigmazdd1); disp('車身加速度均方根值為');disp(sigmazdd2); disp('人體加速度均方根值為');disp(sigmaa); disp('加權加速度均方根值為');disp(aw); disp('加權振級');disp(Law); figure(1) plot(f,z1_q),title('幅頻特性|z1/q|,(f=1.5Hz,ζ=0.25,γ=9,μ=10)'),xlabel('激振頻率f/Hz'),ylabel('|z1/q|'); figure(2) plot(f,z2_z1),title('幅頻特性|z2/z1|,(f=1.5Hz,ζ=0.25,γ=9,μ=10)'),xlabel('激振頻率f/Hz'),ylabel('|z2/z1|'); figure(3) plot(f,p_z2),title('幅頻特性|p/z2|,(fs=1.5Hz,ζs=0.25)'),xlabel('激振頻率f/Hz'),ylabel('|p/z2|'); figure(4) plot(f,jfg_Gzdd1f),title('車輪加速度均方根值√Gz1(f)譜圖'),xlabel('激振頻率f/Hz'),ylabel('√Gz1(f)'); figure(5) plot(f,jfg_Gzdd2f),title('車身加速度均方根值√Gz2(f)譜圖'),xlabel('激振頻率f/Hz'),ylabel('√Gz2(f)'); figure(6) plot(f,jfg_Gaf),title('人體加速度均方根值√Ga(f)譜圖'),xlabel('激振頻率f/Hz'),ylabel('√Ga(f)'); 路面不平度加速度均方根值為 0.3523 車輪加速度均方根值為 0.2391 車身加速度均方根值為 0.0168 人體加速度均方根值為 0.0161 加權加速度均方根值為 0.0100 加權振級 80.0291 (2)問 程序1: clear gama=9;%剛度比γ mu=10;%質量比μ f0=1.5;g=9.8;a0=10^(-6);ua=20; Gqn0=2.56*10^(-8);n0=0.1;detaf=0.2;N=180; f=detaf*[0:N];lamta=f/f0;Wf=0*f; for i=1:(N+1) if f(i)<=2 Wf(i)=0.5; elseif f(i)<=4 Wf(i)=f(i)/4; elseif f(i)<=12.5 Wf(i)=1; else Wf(i)=12.5/f(i); end end fs=3;ypss=0.25; ypss0=[0.125:0.005:0.5];a=0*ypss0;La=0*ypss0; M=length(ypss0); for i=1:M yps=ypss0(i); lamtas=f/fs; deta=((1-lamta.^2).*(1+gama-1/mu*lamta.^2)-1).^2+4*yps^2*lamta.^2.*(gama-(1/mu+1)*lamta.^2).^2; p_z2=sqrt((1+(2*ypss*lamtas).^2)./((1-lamtas.^2).^2+(2*ypss*lamtas).^2)); z2_q=gama*sqrt((1+4*yps^2*lamta.^2)./deta); p_q=p_z2.*z2_q; jfg_Gqddf=4*pi^2*sqrt(Gqn0*n0^2*ua)*f; jfg_Gaf=p_q.*jfg_Gqddf; kk=Wf.^2.*jfg_Gaf.^2; aw(i)=sqrt(trapz(f,kk)); end Law=20*log10(aw/a0); figure(1) plot(ypss0,aw);title('aw隨ζs的變化'),xlabel('“人體—座椅”系統的阻尼比ζs'),ylabel('aw/m*s^-2'); figure(2) plot(ypss0,Law);title('Law隨ζs的變化'),xlabel('“人體—座椅”系統的阻尼比ζs'),ylabel('Law/dB'); 程序2: clear yps=0.25;%阻尼比ζ gama=9;%剛度比γ mu=10;%質量比μ f0=1.5;g=9.8;a0=10^(-6);ua=20; Gqn0=2.56*10^(-8);n0=0.1;detaf=0.2;N=180; f=detaf*[0:N];lamta=f/f0;Wf=0*f; for i=1:(N+1) if f(i)<=2 Wf(i)=0.5; elseif f(i)<=4 Wf(i)=f(i)/4; elseif f(i)<=12.5 Wf(i)=1; else Wf(i)=12.5/f(i); end end ypss=0.25; fs=[1.5:0.025:6]; M=length(fs); for i=1:M fs0=fs(i); lamtas=f/fs0; deta=((1-lamta.^2).*(1+gama-1/mu*lamta.^2)-1).^2+4*yps^2*lamta.^2.*(gama-(1/mu+1)*lamta.^2).^2; p_z2=sqrt((1+(2*ypss*lamtas).^2)./((1-lamtas.^2).^2+(2*ypss*lamtas).^2)); z2_q=gama*sqrt((1+4*yps^2*lamta.^2)./deta); p_q=p_z2.*z2_q; jfg_Gqddf=4*pi^2*sqrt(Gqn0*n0^2*ua)*f; jfg_Gaf=p_q.*jfg_Gqddf; kk=Wf.^2.*jfg_Gaf.^2; aw(i)=sqrt(trapz(f,kk)); end Law=20*log10(aw/a0); figure(3) plot(fs,aw);title('aw隨fs的變化'),xlabel('“人體—座椅”系統的固有頻率fs'),ylabel('aw/m*s^-2'); figure(4) plot(fs,Law);title('Law隨fs的變化'),xlabel('“人體—座椅”系統的固有頻率fs'),ylabel('Law/dB'); (3)問 程序1: clear figure(1) fs=3;yps_s=0.25;g=9.8; ua=20;Gqn0=2.56*10^(-8);n0=0.1;detaf=0.2;N=180; f0=1.5;yps=0.25;gama=9;mu=10; ff0=[0.25:0.05:3];sigmaz2=0*ff0;sigmafd=0*ff0;sigmaFd_G=0*ff0; M=length(ff0); for i=1:M f0=ff0(i); f=detaf*[0:N];lamta=f/f0;lamtas=f/fs; deta=((1-lamta.^2).*(1+gama-1/mu*lamta.^2)-1).^2+4*yps^2*lamta.^2.*(gama-(1/mu+1)*lamta.^2).^2; z2_qdot=2*pi*f*gama.*sqrt((1+4*yps^2*lamta.^2)./deta); fd_qdot=gama*lamta.^2./(2*pi*f+eps)./sqrt(deta); Fd_Gqdot=2*pi*f*gama/g.*sqrt(((lamta.^2/(mu+1)-1).^2+4*yps^2*lamta.^2)./deta); Gq_dotf=4*pi^2*Gqn0*n0^2*ua; Gz2f=(z2_qdot).^2*Gq_dotf; Gfd_qf=(fd_qdot).^2*Gq_dotf; GFd_Gf=(Fd_Gqdot).^2*Gq_dotf; sigmaz2(i)=sqrt(trapz(f,Gz2f)); sigmafd(i)=sqrt(trapz(f,Gfd_qf)); sigmaFd_G(i)=sqrt(trapz(f,GFd_Gf)); if f0==1.5 sgmz2=sigmaz2(i); sgmfd=sigmafd(i); sgmFd_G=sigmaFd_G(i); end end sz2=20*log10(sigmaz2/sgmz2); sfd=20*log10(sigmafd/sgmfd); sFd_G=20*log10(sigmaFd_G/sgmFd_G); plot(ff0,sz2,'r-',ff0,sfd,'b-.',ff0,sFd_G,'k--'); axis([0.25 15]); title('三個響應量均方根值隨f0變化的曲線'),xlabel('車身部分固有頻率f0/Hz'),ylabel('σz2/dB,σfd/dB,σFd/G/dB'); 程序2: clear figure(2) fs=3;yps_s=0.25;g=9.8; ua=20;Gqn0=2.56*10^(-8);n0=0.1;detaf=0.2;N=180; f0=1.5;yps=0.25;gama=9;mu=10; c=(0.5-0.125)/180; yps0=[0.125:c:0.5];sigmaz2=0*yps0;sigmafd=0*yps0;sigmaFd_G=0*yps0; M=length(yps0); for i=1:M yps=yps0(i); f=detaf*[0:N];lamta=f/f0;lamtas=f/fs; deta=((1-lamta.^2).*(1+gama-1/mu*lamta.^2)-1).^2+4*yps^2*lamta.^2.*(gama-(1/mu+1)*lamta.^2).^2; z2_qdot=2*pi*f*gama.*sqrt((1+4*yps^2*lamta.^2)./deta); fd_qdot=gama*lamta.^2./(2*pi*f+eps)./sqrt(deta); Fd_Gqdot=2*pi*f*gama/g.*sqrt(((lamta.^2/(mu+1)-1).^2+4*yps^2*lamta.^2)./deta); Gq_dotf=4*pi^2*Gqn0*n0^2*ua; Gz2f=(z2_qdot).^2*Gq_dotf; Gfd_qf=(fd_qdot).^2*Gq_dotf; GFd_Gf=(Fd_Gqdot).^2*Gq_dotf; sigmaz2(i)=sqrt(trapz(f,Gz2f)); sigmafd(i)=sqrt(trapz(f,Gfd_qf)); sigmaFd_G(i)=sqrt(trapz(f,GFd_Gf)); if yps==0.25 sgmz2=sigmaz2(i); sgmfd=sigmafd(i); sgmFd_G=sigmaFd_G(i); end end sz2=20*log10(sigmaz2/sgmz2); sfd=20*log10(sigmafd/sgmfd); sFd_G=20*log10(sigmaFd_G/sgmFd_G); plot(yps0,sz2,'r-',yps0,sfd,'b-.',yps0,sFd_G,'k--'); axis([0.125 0.5 4]); title('三個響應量均方根值隨ζ變化的曲線'),xlabel('車身部分阻尼比ζ'),ylabel('σz2/dB,σfd/dB,σFd/G/dB'); 程序3: clear figure(3) fs=3;yps_s=0.25;g=9.8; ua=20;Gqn0=2.56*10^(-8);n0=0.1;detaf=0.2;N=180; f0=1.5;yps=0.25;mu=10; gama0=[4:0.1:19];sigmaz2=0*gama0;sigmafd=0*gama0;sigmaFd_G=0*gama0; M=length(gama0); for i=1:M gama=gama0(i); f=detaf*[0:N];lamta=f/f0;lamtas=f/fs; deta=((1-lamta.^2).*(1+gama-1/mu*lamta.^2)-1).^2+4*yps^2*lamta.^2.*(gama-(1/mu+1)*lamta.^2).^2; z2_qdot=2*pi*f*gama.*sqrt((1+4*yps^2*lamta.^2)./deta); fd_qdot=gama*lamta.^2./(2*pi*f+eps)./sqrt(deta); Fd_Gqdot=2*pi*f*gama/g.*sqrt(((lamta.^2/(mu+1)-1).^2+4*yps^2*lamta.^2)./deta); Gq_dotf=4*pi^2*Gqn0*n0^2*ua; Gz2f=(z2_qdot).^2*Gq_dotf; Gfd_qf=(fd_qdot).^2*Gq_dotf; GFd_Gf=(Fd_Gqdot).^2*Gq_dotf; sigmaz2(i)=sqrt(trapz(f,Gz2f)); sigmafd(i)=sqrt(trapz(f,Gfd_qf)); sigmaFd_G(i)=sqrt(trapz(f,GFd_Gf)); if gama==9 sgmz2=sigmaz2(i); sgmfd=sigmafd(i); sgmFd_G=sigmaFd_G(i); end end sz2=20*log10(sigmaz2/sgmz2); sfd=20*log10(sigmafd/sgmfd); sFd_G=20*log10(sigmaFd_G/sgmFd_G); plot(gama0,sz2,'r-',gama0,sfd,'b-.',gama0,sFd_G,'k--'); axis([4 6]); title('三個響應量均方根值隨γ變化的曲線'),xlabel('懸架與輪胎的剛度比γ'),ylabel('σz2/dB,σfd/dB,σFd/G/dB'); 程序4: clear figure(4) fs=3;yps_s=0.25;g=9.8; ua=20;Gqn0=2.56*10^(-8);n0=0.1;detaf=0.2;N=180; f0=1.5;yps=0.25;gama=9; mu0=[5:0.1:20];sigmaz2=0*mu0;sigmafd=0*mu0;sigmaFd_G=0*mu0; M=length(mu0); for i=1:M mu=mu0(i); f=detaf*[0:N];lamta=f/f0;lamtas=f/fs; deta=((1-lamta.^2).*(1+gama-1/mu*lamta.^2)-1).^2+4*yps^2*lamta.^2.*(gama-(1/mu+1)*lamta.^2).^2; z2_qdot=2*pi*f*gama.*sqrt((1+4*yps^2*lamta.^2)./deta); fd_qdot=gama*lamta.^2./(2*pi*f+eps)./sqrt(deta); Fd_Gqdot=2*pi*f*gama/g.*sqrt(((lamta.^2/(mu+1)-1).^2+4*yps^2*lamta.^2)./deta); Gq_dotf=4*pi^2*Gqn0*n0^2*ua; Gz2f=(z2_qdot).^2*Gq_dotf; Gfd_qf=(fd_qdot).^2*Gq_dotf; GFd_Gf=(Fd_Gqdot).^2*Gq_dotf; sigmaz2(i)=sqrt(trapz(f,Gz2f)); sigmafd(i)=sqrt(trapz(f,Gfd_qf)); sigmaFd_G(i)=sqrt(trapz(f,GFd_Gf)); if mu==10 sgmz2=sigmaz2(i); sgmfd=sigmafd(i); sgmFd_G=sigmaFd_G(i); end end sz2=20*log10(sigmaz2/sgmz2); sfd=20*log10(sigmafd/sgmfd); sFd_G=20*log10(sigmaFd_G/sgmFd_G); plot(mu0,sz2,'r-',mu0,sfd,'b-.',mu0,sFd_G,'k--'); axis([5 2]); title('三個響應量均方根值隨μ變化的曲線'),xlabel('車身與車輪部分質量比μ'),ylabel('σz2/dB,σfd/dB,σFd/G/dB'); 數字信號處理MATLAB 第1頁 習題數字信號處理MATLAB習題 M1-1 已知g1(t)?cos(6?t),g2(t)?cos(14?t),g3(t)?cos(26?t),以抽樣頻率fsam?10Hz對上述三個信號進行抽樣。在同一張圖上畫出g1(t),g2(t)和g3(t)及抽樣點,對所得結果進行討論。 解: 第2頁 從以上兩幅圖中均可看出,三個余弦函數的周期雖然不同,但它們抽樣后相應抽樣點所對應的值都相同。那么這樣還原回原先的函數就變成相同的,實際上是不一樣的。這是抽樣頻率太小的原因,我們應該增大抽樣頻率才能真實還原。如下圖:f=50Hz 第3頁 程序代碼 f=10; t=-0.2:0.001:0.2;g1=cos(6.*pi.*t);g2=cos(14.*pi.*t);g3=cos(26.*pi.*t);k=-0.2:1/f:0.2;h1=cos(6.*pi.*k);h2=cos(14.*pi.*k);h3=cos(26.*pi.*k);% subplot(3,1,1); % plot(k,h1,'r.',t,g1,'r');% xlabel('t');% ylabel('g1(t)');% subplot(3,1,2); % plot(k,h2,'g.',t,g2,'g');% xlabel('t');% ylabel('g2(t)');% subplot(3,1,3); % plot(k,h3,'b.',t,g3,'b');% xlabel('t');% ylabel('g3(t)'); plot(t,g1,'r',t,g2,'g',t,g3,'b',k,h1,'r.',k,h2,'g.',k,h3,'b.') 第4頁 xlabel('t');ylabel('g(t)'); legend('g1(t)','g2(t)','g3(t)'); M2-1 利用DFT的性質,編寫一MATLAB程序,計算下列序列的循環卷積。 (1)g[k]={1,-3,4,2,0,-2,},h[k]={3,0,1,-1,2,1};(2)x[k]=cos(?k/2),y[k]=3k,k=0,1,2,3,4,5。解:(1)循環卷積結果 6.0000-3.0000 17.0000-2.0000 7.0000-13.0000 程序代碼 第5頁 g=[1-3 4 2 0-2];h=[3 0 1-1 2 1];l=length(g);L=2*l-1;GE=fft(g,L);HE=fft(h,L);y1=ifft(GE.*HE);for n=1:l if n+l<=L y2(n)=y1(n)+y1(n+l);else y2(n)=y1(n); end end y2 stem(0:l-1,y2)xlabel('k')ylabel('y(k)')title('循環卷積') (2)循環卷積結果 -71.0000-213.0000 89.0000 267.0000 73.0000 219.0000 第6頁 程序代碼 k=0:5; x=cos(pi.*k./2);y=3.^k;l=length(x);L=2*l-1;GE=fft(x,L);HE=fft(y,L);y1=ifft(GE.*HE);for n=1:l if n+l<=L y2(n)=y1(n)+y1(n+l); else y2(n)=y1(n); end end y2 stem(0:l-1,y2)xlabel('k')ylabel('y’(k)')title('循環卷積') 第7頁 M2-2 已知序列x[k]???cos(k?/2N),|k|?N 0,其他?(1)計算序列DTFT的表達式X(ej?),并畫出N=10時,X(ej?)的曲線。 (2)編寫一MATLAB程序,利用fft函數,計算N=10時,序列x[k]的DTFT在?m?2?m/N的抽樣值。利用hold函數,將抽樣點畫在X(ej?)的曲線上。 解: (1)X(e)?DTFT{x[k]}?j?k????x[k]e??j?k?k??N?cos(k?/2N)eN?j?k 程序代碼 N=10;k=-N:N; x=cos(k.*pi./(2*N));W=linspace(-pi,pi,512); 第8頁 X=zeros(1,length(W));for k=-N:N X1=x(k+N+1).*exp(-j.*W.*k);X=X+X1;end plot(W,abs(X))xlabel('W');ylabel('abs(X)'); (2) 程序代碼 N=10;k=-N:N; x=cos(k.*pi./(2*N));X_21=fft(x,21);L=-10:10; W=linspace(-pi,pi,1024);X=zeros(1,length(W));for k=-N:N X1=x(k+N+1).*exp(-j.*W.*k);X=X+X1;end 第9頁 plot(W,abs(X));hold on; plot(2*pi*L/21,fftshift(abs(X_21)),'o');xlabel('W');ylabel('abs(X)'); M2-3 已知一離散序列為x[k]?Acos?0k?Bcos[(?0???)k]。用長度N=64的Hamming窗對信號截短后近似計算其頻譜。試用不同的A和B的取值,確定用Hamming窗能分辨的最小的譜峰間隔??w?c的值。 解:f1=100Hz f2=120Hz時 2?中cN f2=140Hz時 第10頁 f2=160Hz時 第11頁 由以上三幅圖可見 f2=140Hz時,各譜峰可分辨。則?f又 ??w?c2?N ?40Hz 且 ??w???T?2??fT?2??40?1 800所以c=3.2(近似值) 程序代碼 N=64;L=1024; f1=100;f2=160;;fs=800; A=1;B1=1;B2=0.5;B3=0.25;B4=0.05;T=1/fs;ws=2*pi*fs;k=0:N-1; x1=A*cos(2*pi*f1*T*k)+B1*cos(2*pi*f2*T*k);x2=A*cos(2*pi*f1*T*k)+B2*cos(2*pi*f2*T*k);x3=A*cos(2*pi*f1*T*k)+B3*cos(2*pi*f2*T*k);x4=A*cos(2*pi*f1*T*k)+B4*cos(2*pi*f2*T*k);hf=(hamming(N))';x1=x1.*hf;x2=x2.*hf;x3=x3.*hf;x4=x4.*hf; X1=fftshift(fft(x1,L));X2=fftshift(fft(x2,L));X3=fftshift(fft(x3,L));X4=fftshift(fft(x4,L)); W=T*(-ws/2+(0:L-1)*ws/L)/(2*pi);subplot(2,2,1);plot(W,abs(X1));title('A=1,B=1');xlabel('W');ylabel('X1');subplot(2,2,2); 第12頁 plot(W,abs(X2));title('A=1,B=0.5');xlabel('W');ylabel('X2');subplot(2,2,3);plot(W,abs(X3));title('A=1,B=0.25');xlabel('W');ylabel('X3');subplot(2,2,4);plot(W,abs(X4));title('A=1,B=0.05');xlabel('W');ylabel('X4'); M2-4 已知一離散序列為x[k]?cos?0k?0.75cos?1k,0?k?63。其中, ?0?2?/15,?1?2.3?/15。 (1)對x[k]做64點FFT, 畫出此時信號的譜。 (2)如果(1)中顯示的譜不能分辨兩個譜峰,是否可對(1)中的64點信號補0而分辨出兩個譜峰。通過編程進行證實,并解釋其原因。 解:(1) 第13頁 程序代碼 W0=2*pi/15;W1=2.3*pi/15;N=64;k=0:N-1; x=cos(W0*k)+0.75*cos(W1*k);X=fft(x); plot(k/N,abs(X));grid on; title('64點FFT'); (2) 第14頁 第15頁 由以上三幅圖看出:不能對(1)中的64點信號補零而分辨出兩個譜峰,這樣的方法只能改變屏幕分辨率,但可以通過加hamming窗來實現對譜峰的分辨。程序代碼 W0=2*pi/15;W1=2.3*pi/15;N=64;L=1024;k=0:N-1; x=cos(W0*k)+0.75*cos(W1*k);X=fft(x,L); plot((0:L-1)/N,abs(X));grid on; title('1024點FFT'); M2-5 已知一連續信號為x(t)=exp(-3t)u(t),試利用DFT近似分析 第16頁 其頻譜。若要求頻率分辨率為1Hz,試確定抽樣頻率fsam、抽樣點數N以及持續時間Tp。 解: 本題使用矩形窗,則N?fsamfsam1??fsam,Tp??1 ?f1?f 第17頁 由以上三幅圖可以看出當fsam越來越大時,近似值越來越接近 第18頁 于實際值。即fsam越大擬合效果越好,造成的混疊也是在可以允許的范圍內。程序代碼 fs=100;ws=2*pi*fs;Ts=1/fs;N=fs; x=exp(-3*Ts*(0:N-1));y=fft(x,N);l=length(y); k=linspace(-ws/2,ws/2,l); plot(k,Ts*fftshift(abs(y)),'b:');hold on; w=linspace(-ws/2,ws/2,1024);y1=sqrt(1./(9+w.^2));plot(w,y1,'r') title('fs=100Hz時的頻譜')legend('近似值','實際值); M2-6 試用DFT近似計算高斯信號g(t)?exp(?dt2)的頻譜抽樣值。 π?2通過和頻譜的理論值G(j?)?exp(?)比較,討論如何根據時域的信 d4d號來恰當地選取截短長度和抽樣頻率使計算誤差能滿足精度要求。 解: 第19頁 第20頁 由以上三幅圖可以看出: 當時域截取長度相同時,抽樣間隔越小時誤差越小,當抽樣間隔一定時,時域截取長度越長,誤差越小。當取抽樣間隔為1S,時域截取長度為2S時,誤差較大,絕對誤差在0.5左右;當抽樣間隔為0,5S,時域截取長度為2S時,誤差比間隔為1S時小,絕對誤差不大于0.2;當抽樣間隔為0.5S時域截取長度為4S時,誤差更小,絕對誤差不大于0.04。因為時域截取長度越長,保留下來的原信號中的信息越多,抽樣間隔越小,頻譜越不容易發生混疊,所以所得頻譜與理論值相比,誤差更小。 程序代碼 Ts=0.5;N=4;N0=64; k=(-N/2:(N/2))*Ts; 第21頁 x=exp(-pi*(k).^2);X=Ts*fftshift(fft(x,N0)); w=-pi/Ts:2*pi/N0/Ts:(pi-2*pi/N0)/Ts;XT=(pi/pi)^0.5*exp(-w.^2/4/pi);subplot(2,1,1) plot(w/pi,abs(X),'-o',w/pi,XT);xlabel('omega/pi');ylabel('X(jomega)'); legend('試驗值','理論值'); title(['Ts=',num2str(Ts)subplot(2,1,2)plot(w/pi,abs(X)-XT)ylabel('實驗誤差') xlabel('omega/pi'); 'N=',num2str(N)]);第22頁 ' ' 第一章 MATLAB環境 1、MATLAB通用操作界面窗口包括哪些?命令窗口、歷史命令窗口、當前目錄窗口、工作空間窗口各有哪些功能? 答:MATLAB通用操作界面窗口包括:命令窗口、歷史命令窗口、當前目錄瀏覽器窗口、工作空間窗口、變量編輯器窗口、M文件編輯/調試器窗口、程序性能剖析窗口、MATLAB幫助。 命令窗口是MATLAB命令操作的最主要窗口,可以把命令窗口當做高級的“草稿紙”。在命令窗口中可以輸入各種MATLAB的命令、函數和表達式,并顯示除圖形外的所有運算結果。 歷史命令窗口用來記錄并顯示已經運行過的命令、函數和表達式,并允許用戶對它們進行選擇、復制和重運行,用戶可以方便地輸入和修改命令,選擇多行命令以產生M文件。 當前目錄窗口用來設置當前目錄,可以隨時顯示當前目錄下的M、MKL等文件的信息,揚文件類型、文件名、最后個修改時間和文件的說明信息等,并可以復制、編輯和運行M文件及裝載MAT數據文件。 工作空間窗口用來顯示所有MATLAB工作空間中的變量名、數據結構、類型、大小和字節數。 2、熟悉課本中表格1.4、1.5、1.6、1.7、1.8的內容。 3、如何生成數據文件?如何把數據文件中的相關內容輸入到工作空間中,用實例進行操作。 4、在工作空間中可以通過哪些命令管理變量,寫出每種語法的具體操作過程。答:(1)把工作空間中的數據存放到MAT數據文件。 語法:save filename 變量1 變量2 ??參數。 (2)從數據文件中取出變量存放到工作空間。 語法: load filename 變量1 變量2 ??。 (3)查閱MATLAB內存變量名。 語法:who(4)、查閱MATLAB內存變量變量名、大小、類型和字節數。 語法:whos(5)、刪除工作空間中的變量。 語法:clear(6)查詢工作空間中是否存在某個變量。 語法:i=exist(‘X’) 5、MATLAB用戶文件格式有幾哪種?擴展名各是什么? 答:MATLAB的用戶文件格式通常有以下幾種:(1)程序文件,擴展名為.m。(2)數據文件,擴展名為.mat。(3)可執行文件,擴展名為.mex。(4)圖形文件,擴展名為.fig。(5)模型文件,擴展名為.mdl。 6、熟悉文件管理命令的語法,特別是命令type 作用。 7、詳細操作課本26頁例題1.3。 第二章 MATLAB數值計算 1、變量名的命名規則是什么?寫出幾個合理的變量。 答:MATLAB的變量命名規則: (1)變量名區分字母的大、小寫。例 如,“a”和“A”是不同的變量。(2)變量名不能超過63個字符,第63個字符后的字符被忽略。 (3)變量名必須以字母開頭,變量名的組成可以是任意字母,數字或者下畫線,但不能含有空格和標點符號。 (4)關鍵字不能作為變量名。 2、產生矩陣有哪幾種方法?分別舉例說明。 答:(1)通過顯示元素列表輸入矩陣。 例如:d=[2;3,4;5,6] (2)通過語句生成矩陣。 例如:y=1:1:7 (3)由函數產生特殊矩陣。 例如:a=eye(4) 3、在excel表格中輸入2行10列的數據,通過數據加載,輸入到工作空間中,用矩陣元素的操作分別提取第1行和第2行的數據。 4、矩陣和數組的算術運算包括哪些運算?各有哪些不同點? 答:(1)矩陣和數組的加,減運算。 矩陣的加,減法運算規則與數組的完全相同,運算符也完全相同。(2)矩陣和數組的乘法運算。 矩陣的乘法運算表達式為“A*B”,表示矩陣的相乘。矩陣A的列數必須等于矩陣B的行數,除非其中有1個標量。 數組的乘法運算表達式為“A*B”,運算符為“*”,表示數組A和B中的對應元素相乘。 5、多項式如何表示?多項式求值、求根和多項式擬合的語法各是什么? 答:在MATLAB中多項式可以用長度為n+1的行向量表示為:P=[an,an-1??a1,a0],即把多項式的各項系數烽按降冪次序排放成為行向量,如果多項式中缺某冪次項,則用0代替該冪次項的系數。 多項式求值語法:y=polyval(p,x)多項式求根語法:r=roots(p)多項式擬合語法:p=polyfit(x,y,n) 6、多項式一維插值有哪些類型? 答:多項式一維插值是指對一個自變量的插值,interep1函數是用來進行一維插值的,其語法為:yi=interp1(x,y,xi,“method”)。 Method是插值函數的類型,“linear”為線性插值(默認)。“nearest”為用最接近的相鄰點插值。“spline”為三次樣條插值。“cubic”為三次插值。 7、在M文件中完整地寫出語句,使其產生課本中圖2.5 一階、二階和三階擬合曲線,并在適當位置添加圖例。 解:隨機產生一個一元三次多項式y=5x^3+2x^2+x+1; 擬合結果如圖: x1=1:10;p=[2 3 4 5]; y0=polyval(p,x1);p1=polyfit(x1,y0,1);p2=polyfit(x1,y0,2);p3=polyfit(x1,y0,3);y1=polyval(p1,x1);y2=polyval(p2,x1);y3=polyval(p3,x1);plot(x1,y0,'r',x1,y1,'g',x1,y2,'-.',x1,y3,'*')legend('y1,一階擬合','y2,二階擬合','y3,三階擬合',4) 8、元胞數組和結構數組有哪些創建方法? 答:元胞數組的創建方法:(1)直接使用{}創建。(2)由各元胞創建。(3)由各元朡內容創建。結構數組的創建方法:(1)直接創建。 (2)利用struct函數創建。 9、元胞數組和結構數組的內容如何獲取? 答:元胞數組的內容獲取:(1)取元胞數組的元素內容。(2)取元胞數組的元素。結構數組的獲取: (1)使用點號(.)獲取。 (2)使用getfield獲取結構數組的數據。(3)使用setfield設置結構數組的數據。 10、矢量積、數量積和混合積的語法各是什么? 答:矢量積的語法:cross(a,b)數量積的語法:dot(a,b)混合積的語法:dot(a,cross(b,c)) 第四章 MATLAB圖形處理 1、用plot(x,y)命令繪制混合式曲線時有幾種情況?分別舉例說明。 答:(1)如果x是向量,而y是矩陣,則x的長度必須等于矩陣y的行數或列數必須相等。如果x的長度與y的行數相等,則向量x與矩陣y的每列向量對應畫一條曲線;如果x的長度與y的列數相等,則向量x與矩陣y的每行向量對應畫一條曲線;如果y是方陣,則x和y的行數列數都相等,將向量x與矩陣y的每列向量畫1條曲線。 (2)如果x是矩陣,y是向量,則y的長度必須等于x的行數或列數,繪制方法與前一種相似。 (3)如果x和y都是矩陣,則大小必須相同,將矩陣x的每列和y的每列畫一條曲線。 2、熟悉本章表4.1、4.2、4.3、4.4、4.5、4.6中的內容。 3、能熟練操作課本124頁中例題4.10。 x=0:0.1:2*pi;>> plot(x,sin(x))>> hold on >> plot(x,cos(x),'ro')>> title('y1=sin(x),y2=cos(x)')>> xlabel('x')>> legend('sin(x)','cos(x)',4)>> text(pi,sin(pi),'x=pi') 第五章 MATLAB程序設計 1、指出腳本文件和函數文件的不同點? :腳本文件 (1)多條命令的綜合體 (2)沒有輸入、輸出變量 (3使用MATLAB基本工作空間 (4.沒有函數聲明行 函數文件 (1).常用于擴充MATLAB函數庫(2).可以包含輸入、輸出變量 (3).運算中生成的所有變量都存放在函數工作空間(4).包含函數聲明行 腳本文件可以理解為簡單的M文件,腳本文件中的變量都是全局變量。 函數文件是在腳本文件的基礎之上多添加了一行函數定義行,其代碼組織結構 和調用方式與對應的腳本文件截然不同。函數文件是以函數聲明行“function...”作為開始的,其實質就是用戶往MATLAB函數庫里邊添加了子函數,函數文件中的變量都是局部變量,除非使用了特別聲明。函數運行完畢之后,其定義的變量將從工作區間中清除。而腳本文件只是將一系列相關的代碼結合封裝,沒有輸入參數和輸出參數,即不自帶參數,也不一定要返回結果。而多數函數文件一般都有輸入和輸出變量,并見有返回結果。 2、分別用for 循環、while循環和函數調用編寫。 1sum=∑()! i=12i+1 i=10 n=10;sum=0;f=1;>> for i=1:10 f=f/(2*i*(2*i+1));sum=sum+f;end >> sum sum = 0.1752 >> sum=0;f=1;i=1;>> while i<=10 f=f/(2*i*(2*i+1));sum=sum+f;i=i+1;end >> sum sum = 0.1752 8 Matlab心得體會 10金融3 呂淼 2010241125 在為學習這門課前就聽說了他的強大,因為現在的經濟模型都是需要這些分析軟件的,也曾聽說金融的未來方向是需要數學等等作為依托的。曾經旁聽過學校數學建模的課程,當時老師用的是lingo。對那個只需要U盤攜帶就可以安裝的小東西記憶深刻。等到學習matlab時覺得這才是真正的王道啊。 它不僅有強大的運算功能,還有強大的繪圖功能,雖然學習了有一個學習,但是我對他的了解額僅僅是一點點,或許連入門都談不上。因為我學習時了解到一個現實。就是matlab的學習依賴有比較好的數學功底,其中我看最經常運用到的就是矩陣。我從網上了解到matlab是一門高等數學和計算機技術結合的東西,學習它必須具有相應的數學和計算機知識。然而很可惜,我的書寫不是很好。每次講到這個部分的時候就覺得聽說理解無能了。特別是我今年還是大二,有一次老師講課時用到協方差。無可避免的我笑了,因為協方差是我們下節課概率論數理統計老師要講的內容。大一的時候還不覺得,但是大二,越是學習以后的內容越是感覺到時間不夠用。或許時間是夠用的,但是無法放棄那些占用自己時間表的無用項目。雖然這學期的學習的時間短暫,就算時間足夠,老師也不能把所有的都講解給我們,因為一個軟件的功能需要我們自己不斷的去摸索,老師也不可能知道所有。老師只是個指路人,最終的學習還是要靠自己。而且在摸索的過程中,我們能夠發現和體會學習的快樂。痛并快樂著是種常態了吧。 自我感覺學習matlab與其說是學習一門軟件,更不如說是學習一門語言。用一種數理的語言描述現象,揭示表象下的規律。此外,我認為matlab中的作圖功能很強大,不僅簡單的函數現象可以明確畫出,而且一些點狀物,甚至立體圖也可以畫出。大一上微積分的時候,老師曾經多次在課件中加入用matlab畫出的圖來。不論是一維二維三維等等,都能很好的畫出來。只要能編寫出函數式,在短短的幾秒之內,他就會呈現在你眼前。另外就是圖形的直觀性,這是由陰影的制作的。而且可以根據需要,坐標圖上加標題,坐標軸標記,文本注釋級柵格等,也可以指定圖線形式,比如是虛線。顏色也可以自己來定。可以在同一張圖上畫,也可以單個顯示。 今年選擇金融matlab一方面出于希望能夠提前修完大三時期的課程,能夠空出更多的時間去考研或者為就業做準備。另一個考慮就是希望明年能夠參加數學建模大賽,今年種種糾結放棄了,覺得萬分可惜。明年也就是大三下學期的話我就會再來一次,而且還會更加堅定些。那么學習matlab的話對明年的計劃也是有幫助的。在學習的過程中,因為以前學過access中的select語言,覺得就編寫這方面是有共性的,但是matlab的編程語言似乎更多更復雜一點,這是由于涉及的數學模型,數學公式更多的原因。老師在講解的過程中是通過一個個具體的金融例子來講解的,而不是就matlab這個具體的軟件工具進行講解。這個給我帶來相當大的打擊,因為我發現我不僅僅是工具不能夠熟練,涉及到的專業知識也是一知半解。這更加堅定了我要好好學習專業知識的決心,大學四年有幾個人是希望荒度過去的呢?可是今年的這門課真的是讓我感到沒學到什么,估計也是因為我抱著看一看的隨意態度來的吧,也沒有那種遇到不懂的就一定要弄懂它的決心和毅力。說什么都是借口了,無法掩飾我沒有學好它的事實。事實上,我覺得今年這門課的重點并不是讓我們掌握這種軟件的具體用法,而是主要向我們展示如何用它去解決一些金融問題,數學問題。這點讓我很郁悶,因為我不懂得原理,聽起來這門課倍感吃力啊。可是嘛,年輕沒有什么不可以,又有誰可以斷言我接下來的生活中不能好好學習這個東西為自己的工作,學習,生活,研究興趣帶來方便呢。 從大學開學的見聞到現在學習MATLAB,感覺這是一個很好的軟件,語言簡便,實用性強。作為一個做新手,想要學習好這門語言,可以說還是比較難的。在我接觸這門語言的這些天,除了會畫幾個簡單的圖形,其他的還是有待提高。從另一個方面也對我們大學生提出了兩個要求——充實的課外基礎和良好的英語基礎。在現代,幾乎所有好的軟件都是來自國外,假如不會外語,想學好是非常難的。其實想要學習好一們語言,不能只靠老師,關鍵是自己。每個人內心深處都是有抵觸意識的,不可能把老師的所有都學到。學習這門語言,不光是學習一種語言,更重要的事學習一種方法,一種學習軟件的方法,還有學習的態度。 總結一下,學習任何一門語言:態度決定一切。不論是英語還是計算機語言。其實以前上高中的時候接觸過這種編程語言,當時記得最頭疼的就是循環語句,但是在matlab中這種東西用的就比較少了。語言語句都是很簡潔利落的,都是一槍瞄死靶心的那種,很直接,這也讓我減輕不少心理負擔。 其實學習這種事,與其說學習什么具體的東西,更不如說是學習一種態度,從種種波折中認識到自己的局限性,不足。心情會沮喪,也會豁然開朗。光想不練假把式,不論想的再多,不實際運用還是沒有用的。書山有路勤為徑,學海無涯苦作舟。華山再高,頂有過路。這就是我今年學習金融matlab的心得體會。第二篇:汽車理論課后習題Matlab程序
第三篇:數字信號處理課后習題Matlab作業
第四篇:matlab作業題
第五篇:Matlab心得體會