【Matlab作业】MATLAB程序设计

1.程序流程控制结构

(1) for 循环结构

【思考】

(1)下列程序的运行结果:j1=?j2=?% sk1.m

a=1:4; 
b=a'; 
j1=0; 
for i=a 
    j1=j1+1; 
end; 
j2=0; 
for i=b 
    j2=j2+1; 
end;

答:运行结果:j1 = 4, j2 = 1。

(2)分析下列程序的功能和运行结果 % sk2.m

data(:,:,1)=[3 9 45 6; 7 16 -1 5]; 
data(:,:,2)=[1 2 3 4; 8 7 6 5]; 
data 
k=0; 
for n=data 
    n
    k=k+1;
    x=n(1)-n(2) 
end 
k 

答:
程序功能:遍历每一列,计算每列第一行和第二行元素差值;
运行结果:x = -1, k = 8。

(2) while 循环结构

【思考】

(1)while 循环与for 循环的区别是什么?
答:for循环一般用于循环次数已知的情况下;
while 循环一般用于满足条件已知的情况下。

(2) 从键盘输入若干个数,当输入0时结束输入,求这些数的总和及其平均值。% sk3.m
答:

data = [];
num = input('pls input a number:   ');
while(isempty(num) || num ~= 0)
    data = [data num];
    num = input('pls input a number:   ');
end
sum(data)
mean(data)

在这里插入图片描述

【练习】

(1) 请把 exp2.m 函数文件用 while 循环改写。
答:

function s=exp2(x) 
s = 0; 
n = 1;
while n<=x
    s=s+n; 
    n=n+1;
end 

在这里插入图片描述

(2) 用 π /4≈1-1/3+1/5-1/7+…公式求 π 的近似值,直到最后一项的绝对值小于 10-6 为止,试编写其 M 脚本文件。
答:

sum = 1; 
n = 1;
k = 1;
while k*(-1)^(n+1)>10^(-6)
    k = -(2*n-1)/(2*n+1)*k
    sum = sum + k;
    n = n+1;
end  
pai = sum * 4

在这里插入图片描述

(3) if-else-end 分支结构

【思考】

输入一个字符,若为大写字母,则输出其后继字符,若为小写字母,则输出其前导字符,若为其他字符则原样输出。% sk4.m

ch = input('pls input:  ')
num= abs(ch)
if ch > 'A' && ch < 'Z'
    num = num + 1
elseif ch > 'a' && ch < 'z'
    num = num - 1
end
char(num)  

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(4) switch-case 结构

【思考与练习】

PM2.5 是指大气中直径小于或等于2.5微米的可吸入颗粒物,是衡量空气质量的重要指标。假定空气质量等级
以 PM2.5 数值划分为6级。
PM2.5数值在[0,35)空气质量为优;[35,75)为良,[75,115)为轻度污染;[115,150)为中度污
染;[150,250)为重度污染,大于等于250为严重污染。
编写程序,输入PM2.5数值,输出空气质量等级。
(1)用6个单分支结构实现

答:

pm = input('pls input:  ');
% 方法1:6个单分支结构
if pm>=0 && pm<35
    disp('空气质量为优');
end
if pm>=35 && pm<75
    disp('空气质量为良');
end
if pm>=75 && pm<115
    disp('空气质量为轻度污染');
end
if pm>=115 && pm<150
    disp('空气质量为中度污染');
end
if pm>=150 && pm<250
    disp('空气质量为重度污染');
end
if pm>=250 
    disp('空气质量为严重污染');
end

在这里插入图片描述

(2)用多分支if语句实现

pm = input('pls input:  ');
% 方法2:多分支if结构
if pm>=0 && pm<35
    disp('空气质量为优');
elseif pm>=35 && pm<75
    disp('空气质量为良');
elseif pm>=75 && pm<115
    disp('空气质量为轻度污染');
elseif pm>=115 && pm<150
    disp('空气质量为中度污染');
elseif pm>=150 && pm<250
    disp('空气质量为重度污染');
elseif pm>=250 
    disp('空气质量为严重污染');
end

在这里插入图片描述

(3)用switch语句执行

pm = input('pls input:  ');
% 方法3:switch结构
switch pm
    case num2cell(0: 35)
        disp('空气质量为优');
    case num2cell(35: 75)
        disp('空气质量为良');
    case num2cell(75: 115)
        disp('空气质量为轻度污染');
    case num2cell(115: 150)
        disp('空气质量为中度污染');
    case num2cell(150: 250)
        disp('空气质量为重度污染');
    otherwise
        disp('空气质量为严重污染');
end

在这里插入图片描述

2.子函数和参数传递

【练习】

(1) 编写求矩形面积函数 rect,当没有输入参数时,显示提示信息;当只输入一个参数时,则以该参数作为正方形的边长计算其面积;当有两个参数时,则以这两个参数为长和宽计算其面积。
答:

function area = rect(x, y)
if nargin>2 
    error('too many input') 
end 
if nargin==1 
    area = x*x;
else
    area = x*y;
end 

在这里插入图片描述

(2) 编写一个字符串加密函数 nch=my_code( ch , x),其中 ch 是字符串参数,x 为整数;加密方法是:把 ch 的每一个字符的 ASCII 码值加上 x,得到的即为加密后的新的字符串 nch。由于可显示 ASCII 码值是有范围的(32,126),因此当得到的 ASCII码值大于 126 时,需要减去 93 。同理,再编写一个解码函数 nch=my_dcode( ch , x)。
提示:char(32:126) 可获得 ASCII 码值为 32~126 的字符。

答:

function nch=my_code(ch , x)
num = abs(ch);
num = num + x;
if num > 126
    num = num - 93;
end
char(num)

在这里插入图片描述

function nch=my_dcode(ch , x) 
num = abs(ch);
num = num - x;
if num < 32
    num = num + 93;
end
char(num)

在这里插入图片描述

【腾讯云】新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。

Matlab应用 文章被收录于专栏

课程《Matlab语言及其应用综合设计实验》思考和练习题

全部评论
简单了解MATLAB程序设计
点赞 回复 分享
发布于 2022-08-29 13:27 河南

相关推荐

点赞 评论 收藏
分享
牛客100866号技...:把电科加粗,把电科加粗,把电科加粗,两个吊车尾的项目合并成一个,再加一个管理系统。电科✌🏻在成都面中厂手拿把掐
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务