MATLAB编程题

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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容