1. 編寫MATLAB程序磅叛,實(shí)現(xiàn):輸入一個字符,若為大寫字母欢策,則輸出其對應(yīng)的小寫字母柠横;若為小寫字母,則輸出其對應(yīng)的大寫字母平匈;若為數(shù)字字符則輸出其對應(yīng)數(shù)的平方框沟,若為其他字符則原樣輸出。
c='input('請輸入一個字符');
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)如下(商品價格用price來表示)忍燥。輸入所售商品的價格,求其實(shí)際銷售價格
price = input('請輸入商品價格');
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. 輸入一個百分制成績隙姿,要求輸出成績等級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ù)的值尽狠。
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. 一個3位整數(shù)各位數(shù)字的立方和等于該數(shù)本身則稱該數(shù)為水仙花數(shù),輸出全部的水仙花數(shù).
res = [] % 存結(jié)果數(shù)組
for n=100:999
g = rem(n,10); % 取余得到個位
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. 從鍵盤輸入若干個數(shù)衔憨,當(dāng)輸入0時結(jié)束輸入,求這些數(shù)的平均值和它們之和
sum=0; % 記錄輸入數(shù)之和
n=0; % 記錄輸入個數(shù)
x = input('請輸入一個數(shù),0結(jié)束');
while x~=0
sum=sum+x;
n=n+1;
x=input('請輸入一個數(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)眉厨,繪制曲線
(1)曲線為藍(lán)色實(shí)線;
(2)按圖片所示添加標(biāo)題兽狭、x軸說明憾股、y軸說明;
(3)按圖片所示在坐標(biāo)點(diǎn)(3,5)處添加文本說明箕慧。
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),繪制曲線
要求:
(1)曲線為紅色實(shí)線颠焦;
(2)按圖片所示添加標(biāo)題斩熊、x軸說明、y軸說明伐庭;
(3)按圖片所示在坐標(biāo)點(diǎn)(4,0.15)處添加文本說明粉渠。
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)圾另,繪制曲線
要求:
(1)曲線為黑色雙劃線霸株; k--
(2)按圖片所示添加標(biāo)題、x軸說明盯捌、y軸說明淳衙;
(3)按圖片所示在坐標(biāo)點(diǎn)(5,0.2)處添加文本說明。
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)將兩條曲線繪制在同一個坐標(biāo)系中幼衰,y1為綠色虛線數(shù)據(jù)標(biāo)記為圓圈靴跛,y2為藍(lán)色實(shí)線數(shù)據(jù)標(biāo)記為星號;
(2)設(shè)置橫坐標(biāo)范圍為[0,2*pi]渡嚣,縱坐標(biāo)范圍為[-2,2]梢睛;
(3)按圖片所示添加圖例。
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)將兩條曲線繪制在同一個坐標(biāo)系中腹鹉,y1為藍(lán)色虛線數(shù)據(jù)標(biāo)記為星號藏畅,y2為紅色實(shí)線數(shù)據(jù)標(biāo)記為圓圈;
(2)設(shè)置橫坐標(biāo)范圍為[0,2*pi]功咒,縱坐標(biāo)范圍為[-1,2]愉阎;
(3)按圖片所示添加圖例绞蹦。
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)榜旦,按圖片所示在一個圖形窗口中以子圖形式同時繪制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個子窗口
subplot(1,2,1);
plot(x,y1);
title('y1=sin(x)');
% 子窗口2 1,2,1 表示長為1高為2, 第2個子窗口
subplot(1,2,2);
plot(x,y2);
title('y2=cos(x)');
16. 編寫MATLAB程序,在[0,2*pi]區(qū)間內(nèi)溅呢,按圖片所示在一個圖形窗口中以子圖形式同時繪制y1=sin(x)和y2=sin(2x)兩條曲線澡屡。
x=0:pi/20:2*pi;
y1=sin(x);
y2=sin(2*x);
% 子窗口1 2,1,1 表示長為2高為1, 第1個子窗口
subplot(2,1,1);
plot(x,y1);
title(‘y1=sin(x)’);
% 子窗口2 2,1,2 表示長為2高為1, 第2個子窗口
subplot(2,1,2);
plot(x,y2);
title(‘y2=sin(2x)’);
17. 編寫MATLAB程序,繪制三維曲面圖
要求x繪圖區(qū)間為[0,2pi]藕届,y繪圖區(qū)間為[0,2pi]挪蹭。
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程序辜羊,繪制三維曲面圖
要求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個學(xué)生5門課的成績(用取值范圍在[45,95]之間的隨機(jī)矩陣來表示學(xué)生成績八秃,要求成績?yōu)檎麛?shù))存入矩陣P中碱妆,進(jìn)行如下處理:
(1)分別求每門課的最高分、最低分及相應(yīng)學(xué)生序號昔驱;
(2)分別求每門課的平均分和標(biāo)準(zhǔn)差疹尾。
(3)將5門課總分按從大到小順序存入score中,相應(yīng)學(xué)生序號存入num骤肛。
% rand(m,n): 生成m*n個[0,1)的隨機(jī)數(shù)
% 51*rand(m,n): 生成m*n個0-50的隨機(jī)數(shù)
% 45+(51)*rand(100,5) : 生成m*n個45-95的隨機(jī)數(shù)
% fix()取整
P=fix(45+(51)*rand(100,5))
% 求最大值h和對應(yīng)序號n
[h,n]=max(P);
% 求最小值l和對應(yīng)序號n
[l,n]=min(P);
% 求每列平均值
avg = mean(P);
% 求每列標(biāo)準(zhǔn)差
s = std(P);
% 將5門課總分按從大到小順序存入score中纳本,相應(yīng)學(xué)生序號存入num
% s = sum(P) 按列求和
s = sum(P,2); % 按行求和
% sort默認(rèn)升序, 降序排序 用descend ,
[score,num]=sort(s,'descend');
21. 編寫MATLAB程序:某檢測參數(shù)f隨時間t的采樣結(jié)果如圖表所示,用3次埃爾米特插值法(立方差值)計算t=2,12,22,32時f的值腋颠。
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'立方插值.缺省時表示線性插值
f1 = interp1(t,f,t1,'pchip')
22. 編寫MATLAB程序:特殊角及其正弦值如圖表所示巾腕,用3次樣條插值法計算0~90°內(nèi)整數(shù)角度的正弦值。
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)行比較.
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)