MATLAB編程題

1. 編寫MATLAB程序,實(shí)現(xiàn):輸入一個(gè)字符,若為大寫字母,則輸出其對應(yīng)的小寫字母;若為小寫字母,則輸出其對應(yīng)的大寫字母;若為數(shù)字字符則輸出其對應(yīng)數(shù)的平方,若為其他字符則原樣輸出。

c='input('請輸入一個(gè)字符');
if c>='A' && c<='Z'
   disp(lower(c))
elseif c>='a' && c<='z'
    disp(upper(c))
elseif c>='0' && c<='9'
    disp(str2double(c)^2)
else
    disp(c)
end

2. 某商場對商品實(shí)行打折銷售,標(biāo)準(zhǔn)如下(商品價(jià)格用price來表示)。輸入所售商品的價(jià)格,求其實(shí)際銷售價(jià)格

image.png
price = input('請輸入商品價(jià)格');
switch fix(price/100)
    case {0,1}
        rate=0;
    case {2,3,4}   % 數(shù)組
        rate=0.03;
    case num2cell(5:9)  % 將矩陣轉(zhuǎn)為數(shù)組
        rate=0.05
    case num2cell(10:24)
        rate=0.08
    case num2cell(25:49)
        rate=0.1
    otherwise
        rate = 0.14
end
price = price*(1-rate)

3. 輸入一個(gè)百分制成績,要求輸出成績等級A、B、C、D、E。其中90-100分為A,80-89為B,70-79為C,60-69為D,60分以下為E。

score = input('請輸入百分制成績')
switch fix(score/10)
    case {9,10}
        disp('A')
    case {8}
        disp('B')
    case {7}
        disp('C')
    case {6}
        disp('D')
    case num2cell(0:5)
        disp('E')
    otherwise 
        disp('成績在0-100')
end

4. 輸入x的值,求分段函數(shù)的值。

image.png
x = input('請輸入x的值');
if x<0
    y= x^2+x-6;
elseif x>=0&&x<5
    y= x^2-5*x+6;
elseif x>=5
    y= x^2-x-1;
end
disp(y)

5. 一個(gè)3位整數(shù)各位數(shù)字的立方和等于該數(shù)本身則稱該數(shù)為水仙花數(shù),輸出全部的水仙花數(shù).

res = []  % 存結(jié)果數(shù)組
for n=100:999
    g = rem(n,10);  % 取余得到個(gè)位  
    s = rem(fix(n/10),10);  % 得到十位
    b = fix(n/100);   % 取整得到百位
    if n == g^3+s^3+b^3
        res = [res,n];   %加入到結(jié)果數(shù)組
    end
end
disp(res)

6. 從鍵盤輸入若干個(gè)數(shù),當(dāng)輸入0時(shí)結(jié)束輸入,求這些數(shù)的平均值和它們之和

sum=0;  % 記錄輸入數(shù)之和
n=0; % 記錄輸入個(gè)數(shù)
x = input('請輸入一個(gè)數(shù),0結(jié)束');
while x~=0
    sum=sum+x;
    n=n+1;
    x=input('請輸入一個(gè)數(shù),0結(jié)束');
end
if n>0
    sum   %所有數(shù)之和
    sum/n   % 平均值
end

7. 編寫MATLAB函數(shù)文件,函數(shù)名稱為ftemp,要求實(shí)現(xiàn)如下功能:將華氏溫度f轉(zhuǎn)換為攝氏溫度c,轉(zhuǎn)換公式為c=5/9*(f-32)

function [c]=ftemp(f)
    c=5/9*(f-32);
end

8. 編寫MATLAB函數(shù)文件,函數(shù)名稱為fcircle,要求實(shí)現(xiàn)如下功能:求半徑為r的圓的面積s和周長p

function [s,p] = fcircle(r)
    s=pi*r*r;
    p=2*pi*r;
end

9. 編寫MATLAB函數(shù)文件,函數(shù)名稱為fexch,要求實(shí)現(xiàn)如下功能:將變量a和b中的數(shù)據(jù)交換

function [a,b] = fexch(a,b)
    c=a;
    a=b;
    b=c;
end

10. 編寫MATLAB程序,在[-5,5]區(qū)間內(nèi),繪制曲線

image.png

(1)曲線為藍(lán)色實(shí)線;
(2)按圖片所示添加標(biāo)題、x軸說明、y軸說明;
(3)按圖片所示在坐標(biāo)點(diǎn)(3,5)處添加文本說明。


image.png
x=-5:0.05:5;
y=x.*x+1;
plot(x,y,'b-') ;  % 繪制藍(lán)色實(shí)線
title('y=x^2+1');  % 標(biāo)題
xlable('x');  % x軸標(biāo)題
ylable('y');  % y軸標(biāo)題
text(3,5,'曲線')    % 文本說明

11. 編寫MATLAB程序,在[0,8]區(qū)間內(nèi),繪制曲線

image.png

要求:
(1)曲線為紅色實(shí)線;
(2)按圖片所示添加標(biāo)題、x軸說明、y軸說明;
(3)按圖片所示在坐標(biāo)點(diǎn)(4,0.15)處添加文本說明。


image.png
x=0:0.05:8;
y=exp(-x).*sin(x);
plot(x,y,’r-’);
title(‘y=e^{-x}sin(x)’);
xlabel(‘x’);
ylabel(‘y’);
text(4,0.15,’曲線’)

12. 編寫MATLAB程序,在[0,2*pi]區(qū)間內(nèi),繪制曲線

image.png

要求:
(1)曲線為黑色雙劃線; k--
(2)按圖片所示添加標(biāo)題、x軸說明、y軸說明;
(3)按圖片所示在坐標(biāo)點(diǎn)(5,0.2)處添加文本說明。


image.png
x=0:pi/100:2*pi;
y=sin(x).*cos(x);
plot(x,y,’k--’);
title(‘y=sin(x)cos(x)’);
xlabel(‘x’);
ylabel(‘y’);
text(5,0.2,’曲線’)

13. 編寫MATLAB程序,在[0,2*pi]區(qū)間內(nèi),繪制y1=sin(x)和y2=sin(2x)兩條曲線,要求:

(1)將兩條曲線繪制在同一個(gè)坐標(biāo)系中,y1為綠色虛線數(shù)據(jù)標(biāo)記為圓圈,y2為藍(lán)色實(shí)線數(shù)據(jù)標(biāo)記為星號(hào);
(2)設(shè)置橫坐標(biāo)范圍為[0,2*pi],縱坐標(biāo)范圍為[-2,2];
(3)按圖片所示添加圖例。


image.png
x=0:pi/20:2*pi;
y1=sin(x);
y2=sin(2*x);
% 虛線:, 實(shí)線-
plot(x,y1,'g:o',x,y2,'b-*');
axis([0 2*pi -2 2]);       %設(shè)置坐標(biāo)范圍
% 設(shè)置圖例
legend('y1=sin(x)','y2=sin(2x)')

14. 編寫MATLAB程序,在[0,2*pi]區(qū)間內(nèi),繪制y1=cos(x)和y2=cos(x)+1兩條曲線,要求:

(1)將兩條曲線繪制在同一個(gè)坐標(biāo)系中,y1為藍(lán)色虛線數(shù)據(jù)標(biāo)記為星號(hào),y2為紅色實(shí)線數(shù)據(jù)標(biāo)記為圓圈;
(2)設(shè)置橫坐標(biāo)范圍為[0,2*pi],縱坐標(biāo)范圍為[-1,2];
(3)按圖片所示添加圖例。


image.png
x=0:pi/20:2*pi;
y1=cos(x);
y2=cos(x)+1;
plot(x,y1,'b:*',x,y2,'r-o');
axis([0 2*pi -1 2]);
legend('y1=cos(x)','y2=cos(x)+1');

15. 編寫MATLAB程序,在[0,2*pi]區(qū)間內(nèi),按圖片所示在一個(gè)圖形窗口中以子圖形式同時(shí)繪制y1=sin(x)和y2=cos(x)兩條曲線。

x=0:pi/20:2*pi;
y1=sin(x);
y2 = cos(x);
% 子窗口1  1,2,1   表示長為1高為2, 第1個(gè)子窗口
subplot(1,2,1);
plot(x,y1);
title('y1=sin(x)');
% 子窗口2   1,2,1   表示長為1高為2, 第2個(gè)子窗口
subplot(1,2,2);
plot(x,y2);
title('y2=cos(x)');

16. 編寫MATLAB程序,在[0,2*pi]區(qū)間內(nèi),按圖片所示在一個(gè)圖形窗口中以子圖形式同時(shí)繪制y1=sin(x)和y2=sin(2x)兩條曲線。

image.png
x=0:pi/20:2*pi;
y1=sin(x);
y2=sin(2*x);
% 子窗口1  2,1,1   表示長為2高為1, 第1個(gè)子窗口
subplot(2,1,1);
plot(x,y1);
title(‘y1=sin(x)’);
% 子窗口2  2,1,2   表示長為2高為1, 第2個(gè)子窗口
subplot(2,1,2);
plot(x,y2);
title(‘y2=sin(2x)’);

17. 編寫MATLAB程序,繪制三維曲面圖

image.png

要求x繪圖區(qū)間為[0,2pi],y繪圖區(qū)間為[0,2pi]。
image.png

x=0:pi/20:2*pi;
y=0:pi/20:2*pi;
%讓x,y形成格點(diǎn)矩陣
[x,y] =meshgrid(x,y);
z=sin(y).*cos(x);
% 繪制三維曲面
surf(x,y,z);
% 設(shè)置圖形參數(shù)
xlabel('X');
ylabel('Y');
zlabel('Z');
title('surf三維曲面圖');
axis([-2.5 2.5 -2.5 2.5 -5 25]);

18. 編寫MATLAB程序,繪制三維曲面圖


要求x繪圖區(qū)間為[-3,3],y繪圖區(qū)間為[-3,3]。

x=-3:0.05:3;
y=-3:0.05:3
[x,y] = meshgrid(x,y);
z=x.^2+x.*y+y.^2;
surf(x,y,z)

19.編寫MATLAB程序,繪制三維曲面圖

image.png

要求x繪圖區(qū)間為[-10,10],y繪圖區(qū)間為[-10,10]

x=-10:0.05:10;
y=-10:0.05:10;
[x,y]=meshgrid(x,y);
z=x.^2-2*y.^2;
surf(x,y,z);

20. 編寫MATLAB程序,將100個(gè)學(xué)生5門課的成績(用取值范圍在[45,95]之間的隨機(jī)矩陣來表示學(xué)生成績,要求成績?yōu)檎麛?shù))存入矩陣P中,進(jìn)行如下處理:

(1)分別求每門課的最高分、最低分及相應(yīng)學(xué)生序號(hào);
(2)分別求每門課的平均分和標(biāo)準(zhǔn)差。
(3)將5門課總分按從大到小順序存入score中,相應(yīng)學(xué)生序號(hào)存入num。

% rand(m,n): 生成m*n個(gè)[0,1)的隨機(jī)數(shù)
% 51*rand(m,n): 生成m*n個(gè)0-50的隨機(jī)數(shù)
% 45+(51)*rand(100,5) : 生成m*n個(gè)45-95的隨機(jī)數(shù)
% fix()取整
P=fix(45+(51)*rand(100,5))  
% 求最大值h和對應(yīng)序號(hào)n
[h,n]=max(P);
% 求最小值l和對應(yīng)序號(hào)n
[l,n]=min(P);
% 求每列平均值
avg = mean(P);
% 求每列標(biāo)準(zhǔn)差
s = std(P);
% 將5門課總分按從大到小順序存入score中,相應(yīng)學(xué)生序號(hào)存入num
%  s = sum(P)   按列求和
s = sum(P,2);   % 按行求和
% sort默認(rèn)升序,  降序排序 用descend ,
[score,num]=sort(s,'descend');

21. 編寫MATLAB程序:某檢測參數(shù)f隨時(shí)間t的采樣結(jié)果如圖表所示,用3次埃爾米特插值法(立方差值)計(jì)算t=2,12,22,32時(shí)f的值。

image.png
t=0:5:35;
f=[3.1025,2.256,879.5,1835.9,2968.8,4136.2,5237.9,6152.7];
t1=2:10:32;
% nearest'是最鄰近插值, 'linear'線性插值; 'spline'三次樣條插值; 'pchip'立方插值.缺省時(shí)表示線性插值
f1 = interp1(t,f,t1,'pchip')

22. 編寫MATLAB程序:特殊角及其正弦值如圖表所示,用3次樣條插值法計(jì)算0~90°內(nèi)整數(shù)角度的正弦值。

image.png
a=0:15:90;
sina=[0,0.2588,0.5000,0.7071,0.8660,0.9659,1.0000];
a1=0:90;
sina1=interp1(a,sina,a1,'spline')

23. 編寫MATLAB程序:特殊角及其正弦值如圖表所示,用5次多項(xiàng)式擬合此數(shù)據(jù),并利用繪圖的方法將擬合結(jié)果和表中采樣數(shù)據(jù)進(jìn)行比較.

image.png
a=0:15:90;
sina=[0,0.2588,0.5000,0.7071,0.8660,0.9659,1.0000];
% 擬合5次
a1 = ployfit(a,sina,5);
% 比較
sina1 = ployval(a1,a);
% 化圖 
plot(a,sina,a,sina1)

1. 按成績打等級

names=['王','張','劉 ','李','陳','楊','于','黃','郭 ','趙'];
marks=[72,83,56,94,100,88,96,68,54,65]; 
n = length(marks);
rk=[];
for i=1:n
   switch fix(marks(i)/10)
   case {10}
       rk=[rk,'滿分 '];
   case {9}
      rk=[rk,'優(yōu)秀 '];
   case {8}
      rk=[rk,'良好 '];
   case {6,7}
      rk=[rk,'及格 '];
   otherwise
       rk=[rk,'不及格 '];
   end
end

% 顯示
disp(names)
disp(marks)
disp(rk)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容