1.有一周期为4p的正弦波上叠加了方差为0.1的正态分布的随机噪声的信号,用循环结构编制一个三点线性滑动平均的程序。(提示:①用0.1*randn(1,n)产生方差为0.1的正态分布的随机噪声;②三点线性滑动平均就是依次取每三个相邻数的平均值作为新的数据,如x1(2)=(x(1)+x(2)+x(3))/3,x1(3)=(
x(2)+x(3)+x(4))/3……)
程序:
t=0:pi/50:4*pi;
n=length(t);
y=sin(t)+0.1*randn(1,n);
ya(1)=y(1);
for i=2:n-1
ya(i)=sum(y(i-1:i+1))/3;
end
ya(n)=y(n);
plot(t,y,'c',t,ya,'r','linewidth',2)
结果:
http://s13/middle/6ff31463ga0b92ceae4cc&690
2.编制一个解数论问题的函数文件:取任意整数,若是偶数,则用2除,否则乘3加1,重复此过程,直到整数变为1。
程序:
function
c=collatz(n)
% collatz
% Classic “3n+1” Ploblem
from number theory
c=n;
while
n>1
if rem(n,2)==0
n=n/2;
else
n=3*n+1;
end
c=[c n];
end
调用:
collatz(25)
结果:
ans =
Columns 1 through 20
25
76
38
19
58
29
88
44
22
11
34
17
52
26
13
40
20
10
5 16
Columns 21 through 24
8
4
2
1
3.有一组学生的考试成绩(见表),根据规定,成绩在100分时为满分,成绩在90~99之间时为优秀,成绩在80~89分之间时为良好,成绩在60~79分之间为及格,成绩在60分以下时为不及格,编制一个根据成绩划分等级的程序。
|
学生姓名
|
王
|
张
|
刘
|
李
|
陈
|
杨
|
于
|
黄
|
郭
|
赵
|
|
成 绩
|
72
|
83
|
56
|
94
|
100
|
88
|
96
|
68
|
54
|
65
|
程序:(可扩展)
Name=['王','张','刘','李','陈','杨','于','黄','郭','赵'];
Marks=[72,83,56,94,100,88,96,68,54,65];
%
划分区域:满分(100),优秀(90-99),良好(80-89),及格(60-79),不及格(<60)。
n=length(Marks);
for i=1:10
a{i}=89+i;
b{i}=79+i;
c{i}=69+i;
d{i}=59+i;
end;
c=[d,c];
% 根据学生的分数,求出相应的等级。
for i=1:n
switch Marks(i)
case 100
%得分为100时
Rank(i,:)=' 满分';
case
a
%得分在90~99之间
Rank(i,:)=' 优秀';
case b
%得分在80~89之间
Rank(i,:)=' 良好';
case
c
%得分在60~79之间
Rank(i,:)=' 及格';
otherwise
%得分低于60。
Rank(i,:)='不及格';
end
end
% 将学生姓名,得分,级等信息打印出来。
disp(' ')
disp(['学生姓名
',' 得分
',' 等级']);
disp('--------------------------')
for i=1:n;
disp(['
',Name(i),'
',num2str(Marks(i)),'
',Rank(i,:)]);
end
运行结果:
学生姓名
得分
等级
--------------------------
王
72 及格
张
83 良好
刘
56 不及格
李
94 优秀
陈
100 满分
杨
88 良好
于
96 优秀
黄
68 及格
郭
54 不及格
赵
65 及格
4.编写一段程序,能够把输入的摄氏温度转化成华氏温度,也能把华氏温度转换成摄氏温度。
程序:
k=input('选择转换方式(1--摄氏转换为华氏,2--华氏转换为摄氏):');
if k~=1 &
k~=2
disp('请指定转换方式')
break
end
tin=input('输入待转变的温度(允许输入数组):');
if k==1
tout=tin*9/5+32;
% 摄氏转换为华氏
k1=2;
elseif k==2
tout=(tin-32)*5/9;
% 华氏转换为摄氏
k1=1;
end
str=[' degC';' degF'];
disp(['转换前的温度',
' ',
'转换后的温度'])
disp(['
',num2str(tin),str(k,:),
'
', num2str(tout),str(k1,:)])
结果:
选择转换方式(1--摄氏转换为华氏,2--华氏转换为摄氏):2
输入待转变的温度(允许输入数组):99
转换前的温度
转换后的温度
99
degF
37.2222 degC
加载中,请稍候......