1. 编写MATLAB程序,实现:输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应数的平方,若为其他字符则原样输出。
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. 某商场对商品实行打折销售,标准如下(商品价格用price来表示)。输入所售商品的价格,求其实际销售价格
image.png
price = input('请输入商品价格');
switch fix(price/100)
case {0,1}
rate=0;
case {2,3,4} % 数组
rate=0.03;
case num2cell(5:9) % 将矩阵转为数组
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的值,求分段函数的值。
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. 一个3位整数各位数字的立方和等于该数本身则称该数为水仙花数,输出全部的水仙花数.
res = [] % 存结果数组
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]; %加入到结果数组
end
end
disp(res)
6. 从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和
sum=0; % 记录输入数之和
n=0; % 记录输入个数
x = input('请输入一个数,0结束');
while x~=0
sum=sum+x;
n=n+1;
x=input('请输入一个数,0结束');
end
if n>0
sum %所有数之和
sum/n % 平均值
end
7. 编写MATLAB函数文件,函数名称为ftemp,要求实现如下功能:将华氏温度f转换为摄氏温度c,转换公式为c=5/9*(f-32)
function [c]=ftemp(f)
c=5/9*(f-32);
end
8. 编写MATLAB函数文件,函数名称为fcircle,要求实现如下功能:求半径为r的圆的面积s和周长p
function [s,p] = fcircle(r)
s=pi*r*r;
p=2*pi*r;
end
9. 编写MATLAB函数文件,函数名称为fexch,要求实现如下功能:将变量a和b中的数据交换
function [a,b] = fexch(a,b)
c=a;
a=b;
b=c;
end
10. 编写MATLAB程序,在[-5,5]区间内,绘制曲线
image.png
(1)曲线为蓝色实线;
(2)按图片所示添加标题、x轴说明、y轴说明;
(3)按图片所示在坐标点(3,5)处添加文本说明。
image.png
x=-5:0.05:5;
y=x.*x+1;
plot(x,y,'b-') ; % 绘制蓝色实线
title('y=x^2+1'); % 标题
xlable('x'); % x轴标题
ylable('y'); % y轴标题
text(3,5,'曲线') % 文本说明
11. 编写MATLAB程序,在[0,8]区间内,绘制曲线
image.png
要求:
(1)曲线为红色实线;
(2)按图片所示添加标题、x轴说明、y轴说明;
(3)按图片所示在坐标点(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]区间内,绘制曲线
image.png
要求:
(1)曲线为黑色双划线; k--
(2)按图片所示添加标题、x轴说明、y轴说明;
(3)按图片所示在坐标点(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]区间内,绘制y1=sin(x)和y2=sin(2x)两条曲线,要求:
(1)将两条曲线绘制在同一个坐标系中,y1为绿色虚线数据标记为圆圈,y2为蓝色实线数据标记为星号;
(2)设置横坐标范围为[0,2*pi],纵坐标范围为[-2,2];
(3)按图片所示添加图例。
image.png
x=0:pi/20:2*pi;
y1=sin(x);
y2=sin(2*x);
% 虚线:, 实线-
plot(x,y1,'g:o',x,y2,'b-*');
axis([0 2*pi -2 2]); %设置坐标范围
% 设置图例
legend('y1=sin(x)','y2=sin(2x)')
14. 编写MATLAB程序,在[0,2*pi]区间内,绘制y1=cos(x)和y2=cos(x)+1两条曲线,要求:
(1)将两条曲线绘制在同一个坐标系中,y1为蓝色虚线数据标记为星号,y2为红色实线数据标记为圆圈;
(2)设置横坐标范围为[0,2*pi],纵坐标范围为[-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]区间内,按图片所示在一个图形窗口中以子图形式同时绘制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]区间内,按图片所示在一个图形窗口中以子图形式同时绘制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个子窗口
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程序,绘制三维曲面图
image.png
要求x绘图区间为[0,2pi],y绘图区间为[0,2pi]。
image.png
x=0:pi/20:2*pi;
y=0:pi/20:2*pi;
%让x,y形成格点矩阵
[x,y] =meshgrid(x,y);
z=sin(y).*cos(x);
% 绘制三维曲面
surf(x,y,z);
% 设置图形参数
xlabel('X');
ylabel('Y');
zlabel('Z');
title('surf三维曲面图');
axis([-2.5 2.5 -2.5 2.5 -5 25]);
18. 编写MATLAB程序,绘制三维曲面图
要求x绘图区间为[-3,3],y绘图区间为[-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绘图区间为[-10,10],y绘图区间为[-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个学生5门课的成绩(用取值范围在[45,95]之间的随机矩阵来表示学生成绩,要求成绩为整数)存入矩阵P中,进行如下处理:
(1)分别求每门课的最高分、最低分及相应学生序号;
(2)分别求每门课的平均分和标准差。
(3)将5门课总分按从大到小顺序存入score中,相应学生序号存入num。
% rand(m,n): 生成m*n个[0,1)的随机数
% 51*rand(m,n): 生成m*n个0-50的随机数
% 45+(51)*rand(100,5) : 生成m*n个45-95的随机数
% fix()取整
P=fix(45+(51)*rand(100,5))
% 求最大值h和对应序号n
[h,n]=max(P);
% 求最小值l和对应序号n
[l,n]=min(P);
% 求每列平均值
avg = mean(P);
% 求每列标准差
s = std(P);
% 将5门课总分按从大到小顺序存入score中,相应学生序号存入num
% s = sum(P) 按列求和
s = sum(P,2); % 按行求和
% sort默认升序, 降序排序 用descend ,
[score,num]=sort(s,'descend');
21. 编写MATLAB程序:某检测参数f随时间t的采样结果如图表所示,用3次埃尔米特插值法(立方差值)计算t=2,12,22,32时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'立方插值.缺省时表示线性插值
f1 = interp1(t,f,t1,'pchip')
22. 编写MATLAB程序:特殊角及其正弦值如图表所示,用3次样条插值法计算0~90°内整数角度的正弦值。
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次多项式拟合此数据,并利用绘图的方法将拟合结果和表中采样数据进行比较.
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,'优秀 '];
case {8}
rk=[rk,'良好 '];
case {6,7}
rk=[rk,'及格 '];
otherwise
rk=[rk,'不及格 '];
end
end
% 显示
disp(names)
disp(marks)
disp(rk)