ans=
01
00
01
>>E&D
ans=
11
01
11
>>E|D
ans=
11
11
11
>>~E|~D
ans=
00
10
00
4.产生均值为3,方差为1的5阶正态分布的随机方阵。
程序代码及结果:
>>A=3+randn(5)
A=
1.33444.18923.72584.06681.6638
3.12532.96242.41173.05933.7143
3.28773.32735.18322.90444.6236
1.85353.17462.86362.16772.3082
4.19092.81333.11393.29443.8580
5.使用函数,实现方阵A左旋
、右旋
的功能,
。
程序代码及结果:
>>A=[14710;25811;36912;471013]
A=
14710
25811
36912
471013
>>rot90(A)
ans=
10111213
78910
4567
1234
>>rot90(A,-3)
ans=
10111213
78910
4567
1234
6.建立一个字符串向量(要求字符串向量必须包含自己的姓名,大小写均可),删除其中的大写字母。
程序代码及结果:
xm='MynameisLiyandan'
xm=
MynameisLiyandan
>>xm='MynameisLiyandan
xm=
MynameisLiyandan
>>k=find(xm>='A'&xm<='Z');
>>xm(k)=[];
>>char(xm)
ans=
MynameisLiyandan
7.分别建立一个结构矩阵和一个单元矩阵来存储自己班上5名同学的基本情况数据(其中1名同学必须是自己,另外一名必须是女生),每名学生的数据包括学好、姓名、专业和6门课程的成绩。
并查询自己的所有信息以及女生的成绩。
程序代码及结果:
>>a.xuehao=20111409;a.name='欧阳冬枚';a.major='机械4班';a.grade=[879892919496]
a=
xuehao:
20111409
name:
'欧阳冬枚'
major:
'机械4班'
grade:
[879892919496]
>>b.xuehao=20111292;b.name='李衍丹';b.major='机械4班';b.grade=[918581889790]
b=
xuehao:
20111292
name:
'李衍丹'
major:
'机械4班'
grade:
[918581889790]
>>c.xuehao=20111291;c.name='李翔宇';c.major='机械4班';c.grade=[878791959393]
c=
xuehao:
2011191
name:
'李翔宇'
major:
'机械4班'
grade:
[878791959393]
>>d.xuehao=20111302;d.name='王伟';d.major='机械4班';d.grade=[848792918594]
d=
xuehao:
20111302
name:
'王伟''
major:
'机械4班'
grade:
[848792918594]
>>e.xuehao=20111311;e.name='尹章良';e.major='机械4班';e.grade=[889387918496]
e=
xuehao:
20111311
name:
'尹章良'
major:
'机械4班'
grade:
[889387918496]
>>z={20111409,'欧阳冬枚','机械4班',[879892919496];20111292,'李衍丹','机械4班',[918581889790];20111291,'李翔宇,'机械4班',[878791959393];20111302,'王伟','机械4班',[848792918594];20111311,'尹章良','机械4班',[889387918496]}
z=
[20111409]‘欧阳冬枚''机械4班'[1x6double]
[20111292]'李衍丹''机械4班'[1x6double]
[20111291]'李翔宇''机械4班'[1x6double]
[20111302]'王伟''机械4班'[1x6double]
[20111311]'尹章良''机械4班'[1x6double]
第二次上机作业
1.分析脚本M文件与函数M文件的区别。
区别:
1)、脚本M文件没有输入参数,也不返回输出参数,而函数M文件可以带参数,也可以返回输出参数;
2)、脚本M文件对MATLAB工作空间中的变量进行操作,文件中所有命令的执行结果也完全返回到工作空间中,而函数M文件中定义的变量为局部变量,当函数M文件执行完毕时,这些变量被消除;
3)、脚本M文件可以直接运行,在MATLAB命令窗口中输入命令文件的名字,就会顺序执行命令文件中的命令,而函数M文件不能直接运行,而要用函数调用的方式运行。
2.分别编写脚本文件,实现以下要求:
1)求[100,999]之间能被21整除的个数。
2)用magic(6)产生一矩阵,用至少两种方法求解其所有元素的和。
(提示:
1、for循环;2、sum函数)
程序代码及结果:
(1).sum=0;
forn=100:
999;
ifrem(n,21)==0;
sum=sum+1;
end
end
sum
sum=
43
(2).A=magic(6)
sum=0;
forn=1:
36;
sum=sum+A(n);
end
sum
A=
3516261924
3327212325
3192222720
82833171015
30534121416
43629131811
sum=
666
A=magic(6)
sum=6*(A(1,1)+A(1,2)+A(1,3)+A(1,4)+A(1,5)+A(1,6))
A=
3516261924
3327212325
3192222720
82833171015
30534121416
43629131811
sum=
666
3.编写函数文件,实现从键盘输入一个3位整数,将它反向输出。
如639,输出为936。
并调用该函数,输入自己的学号后三位数,输出结果。
程序代码及结果:
functiond=fad(f)
a=fix(f/100);
b=fix(f/10)-10*fix(f/100);
c=rem(f,10);
d=a+10*b+100*c
y=input('inputanumber:
');x=fad(y)
inputanumber:
292
d=
292
x=
292
4.定义一个函数文件,求
,要求在函数文件中包含能够通过help查询到的说明,说明里面必须有自己的名字学号。
然后调用该函数文件求
的值。
程序代码及结果:
function[count]=asd(n,m)
%姓名:
李衍丹
%学号:
20111292
count=0;
fori=1:
n
count=count+i^m;
end
count=asd(100,1)+asd(50,2)+asd(10,-1)
count=4.7978e+004
5.已知
,当x取-3.0,-2.9,-2.8,…,2.8,2.9,3.0时,
1)、求各点的函数值;
2)、求这些数据的平均值;
程序代码及结果:
(1).functiona=diwuti(n,m)
forx=(n:
0.1:
m)
a=sin(x+1.7)*log((pi+x)/2)/(1+cos(x+1.7))
end
a
>>y=diwuti(-3,3)
a=2.0130
a=1.4460
a=1.0835
a=0.8252
a=0.6311
a=0.4807
a=0.3621
a=0.2678
a=0.1924
a=0.1322
a=0.0847
a=0.0478
a=0.0200
a=0
a=-0.0130
a=-0.0198
a=-0.0209
a=-0.0167
a=-0.0076
a=0.0064
a=0.0250
a=0.0482
a=0.0762
a=0.1090
a=0.1469
a=0.1904
a=0.2398
a=0.2958
a=0.3594
a=0.4317
a=0.5141
a=0.6086
a=0.7178
a=0.8453
a=0.9962
a=1.1774
a=1.3996
a=1.6789
a=2.0418
a=2.5340
a=3.2431
a=4.3588
a=6.3853
a=11.2510
a=39.4306
a=-28.8207
a=-10.8760
a=-6.8045
a=-4.9934
a=-3.9630
a=-3.2935
a=-2.8202
a=-2.4653
a=-2.1871
a=-1.9614
a=-1.7731
a=-1.6124
a=-1.4725
a=-1.3487
a=-1.2373
a=-1.1359
a=-1.1359
y=-1.1359
(2).functiona=diwuti(n,m)
a=0;
forx=(n:
0.1:
m)
a=sin(x+1.7)*log((pi+x)/2)/(1+cos(x+1.7))+a;
a=10*a/(m-n);
end
a
>>y=diwuti(-3,3)
a=
1.2269e+014
y=
1.2269e+014
6.求分段函数的值。
用if语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5时的值。
程序代码及结果:
x=input('inputx:
');
ifx<0&x~=-3
y=x^2+x-6;
else
ifx>=0&x<5&x~=2&x~=3
y=x^2-5*x+6;
else
y=x^2-x-1;
end
end
Y
inputx:
-5
y=
14
inputx:
-3
y=
11
inputx:
1
y=
2
inputx:
2
y=
1
inputx:
2.5
y=
-0.2500
7.输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。
其中90分~100分为A,80分~89分为B,70分~79分为C,60分~69分为D,60分以下为E。
程序代码及结果:
(1).x=input('pleaseinputyourgrade:
')
ifx>=90&x<=100
disp('A')
elseifx>=80&x<=89
disp('B')
elseifx>=70&x<=79
disp('C')
elseifx>=60&x<=69
disp('D')
else
disp('E')
end
pleaseinputyourgrade:
68
x=
68
D
pleaseinputyourgrade:
96
x=
96
A
pleaseinputyourgrade:
85
x=
85
B
pleaseinputyourgrade:
76
x=
76
C
pleaseinputyourgrade:
56
x=
56
E
(2).grade=input('pleaseinputyourgrade:
')
switchfix(grade/10)
case{0,5}
disp('E')
case{6}
disp('D')
case{7}
disp('C')
case{8}
disp('B')
otherwise
disp('A')
end
pleaseinputyourgrade:
59
grade=
59
E
pleaseinputyourgrade:
68
grade=
68
D
pleaseinputyourgrade:
79
grade=
79
C
pleaseinputyourgrade:
83
grade=
83
B
pleaseinputyourgrade:
96
grade=
96
A
8.根据
的近似值。
当n分别取100、1000、10000时,结果是多少?
(要求:
分别用循环结构和向量运算来实现).
程序代码及结果:
(1)、functionp=dibati(n)
p=0;
fori=1:
1:
n
p=p+1/(i^2);
end
p=sqrt(6*p);
>>y=dibati(100)
y=
3.1321
>>y=dibati(1000)
y=
3.1406
>>y=dibati(10000)
y=
3.1415
(2)、functionp=dibati(n)
i=1:
1:
n;
p=sum(1./i./i);
p=sqrt(6*p);
>>y=dibati(100)
y=
3.1321
>>y=dibati(1000)
y=
3.1406
>>y=dibati(10000)
y=
3.1415
9.已知n=1时,f1=1;n=2时,f2=0;n=3时,f3=1;n>3时,fn=fn-1-2fn-2+fn—3;
求f1~f100中,最大值、最小值以及各数之和。
程序代码及结果:
f
(1)=1;
f
(2)=0;
f(3)=1;
forn=4:
100
f(n)=f(n-1)-2*f(n-2)+f(n-3);
end
MAX=max(f)
MIN=min(f)
SUM=sum(f)
MAX=
4.3776e+011
MIN=
-8.9941e+011
SUM=
-7.4275e+011
10.某公司员工的工资计算方法如下:
1)工作时数超过120小时者,超过部分加发15%;
2)工作时数低于60小时者,扣发700元;
3)其余按每小时84元计发。
试编程按输入的工号和该号员工的工时数,计算应发工资。
程序代码及结果:
hours=input('ÇëÊäÈ빤×÷ʱÊý£º');
s=90;%¶¨ÒåÿСʱ¹¤×ÊΪ90Ôª
ifhours<60
salary=hours*s-700;
elseifhours>120
salary=120*s+(hours-120)*s*(1+0.15);
elsesalary=84*hours;
end
salary
请输入工作时数:
100
salary=
8400
请输入工作时数:
130
salary=
11835
请输入工作时数:
40
salary=
2900
第三次上机作业
1、运行课本第四章及课堂上讲过的例子.
(1)、x=[0:
0.1:
1];
y=[2.3,4.3,2.5,6,4.9,1.5,1,4.6,5,6.7,0];
plot(x,y)
(2)、t=linspace(0,2*pi,100);
x=[t;t]';
y=[sin(t);cos(t)]';
plot(x,y)
(3)、x=0:
0.1:
3*pi;
y1=sin(x);
y2=cos(x);
plot(x,y1,'--g',x,y2,':
bo');
patch(x,y1,'r')
2、设
区间取101点,绘制函数的曲线。
程序代码及结果:
x=0:
2*pi/101:
2*pi;
y=(0.5+3.*sin(x)/(1+x.*x)).*cos(x);
plot(x,y)
3、已知
,完成下列操作:
(1)在同一坐标系下用不同的颜色和线型绘制三条曲线。
(2)在不同的窗口用不同的颜色和线型绘制三条曲线。
(3)以子图形式用不同的颜色和线型制三条曲线。
(4)为(3)所有子图添加标题、坐标轴说明及适当的文本标注。
程序代码及结果:
(1)、x=0:
pi/100:
2*pi;
y1=x.*x;
y2=cos(2.*x);
y3=y1.*y2;
plot(x,y1,'g-',x,y2,'b-.',x,y3,'r:
')
(2)、x=0:
pi/100:
2*pi;
y1=x.*x;
y2=cos(2.*x);
y3=y1.*y2;
figure
(1)
plot(x,y1,'g-')
figure
(2)
plot(x,y2,'b-.')
figure(3)
plot(x,y3,'r:
')
(3)、x=0:
pi/100:
2*pi;
y1=x.*x;
y2=cos(2.*x);
y3=y1.*y2;
subplot(2,2,1)
plot(x,y1,'g-')
subplot(2,2,2)
plot(x,y2,'b-.')
subplot(2,2,3)
plot(x,y3,'r:
')
(4)、x=0:
pi/100:
2*pi;
y1=x.*x;
y2=cos(2.*x);
y3=y1.*y2;
subplot(2,2,1)
plot(x,y1,'g-')
title('ÇúÏßy1=x^2');
xlabel('VariableX');
ylabel('VariableY');
text(2,30,'y1=x^2')
s