MATLAB复习题.docx
《MATLAB复习题.docx》由会员分享,可在线阅读,更多相关《MATLAB复习题.docx(21页珍藏版)》请在冰豆网上搜索。
MATLAB复习题
复习题
填空
1.清除命令窗口内容的命令是(clc)。
2.删除工作空间中保存的变量x的命令是(clearx)。
3.将双精度实数的显示格式设置成15位定点小数格式的命令是(formatlong)。
4.要在命令窗口中查看对函数log的帮助信息,所用命令是(helplog)。
5.要查询在工作空间中定义的变量x的相关信息,可用命令(whosx)。
6.Matlab标识符构成规则是(以字母打头,由字母,数字,下划线组成。
)。
7.Matlab存储数值的默认类型是(双精度浮点形式)。
8.设x是复数,取x的实部存入变量y的语句是(y=real(x))。
9.设x是复数,取x的虚部存入变量y的语句是(y=imag(x))。
10.设x是复数,取x的模存入变量y的语句是(y=abs(x))。
11.设x是复数,取x的辐角(角度)存入变量y的语句是(y=angle(x)/pi*180)。
12.设x是复数,取x的共轭存入变量y的语句是(y=conj(x))。
13.设a和b是逻辑型变量,则表达式a+b的类型是(double)。
14.设a和b是逻辑型变量,则表达式a*b的类型是(double)。
15.表达式(3>2)*(5~=5)的类型是(double)。
16.表达式(5<2)*120的值是(0)。
17.表达式(5>2)*(6~=5)的值是
(1)。
18.表达式char(65)=='A'的值是
(1)。
19.表达式char(65)+1的值是(66)。
20.表达式'A'+1的值是(66)。
21.表达式'A'+'B'的值是(131)。
22.存储double型数据占用内存(8)字节。
23.存储single型数据占用内存(4)字节。
24.存储logical型数据占用内存
(1)字节。
25.存储字符型数据占用内存
(2)字节。
26.数组[8:
2,1:
5]含有(5)个数元素。
27.数组[8:
-2:
2,7:
2:
1]含有(4)个数元素。
28.从一维数组A中检索所有偶数下标的元素的表达式是(a=A(2:
2:
end))。
29.从一维数组A中检索所有奇数下标的元素的表达式是(a=A(1:
2:
end))。
30.删除一维数组A中所有奇数下标的元素的语句是(A(1:
2:
end)=[])。
31.删除一维数组A中所有偶数下标的元素的语句是(A(2:
2:
end)=[])。
32.从N×N(N>3且是奇数)矩阵A中取出位于中心的3×3子矩阵的表达式(
A=((N-1)/2:
(N-1)/2+2,(N-1)/2:
(N-1)/2+2))。
33.设a、b、c是一维行向量,以a、b、c为列构建三列的二维数组A的语句是(A=(a';b';c'))。
34.设a、b、c是一维列向量,以a、b、c为行构建三行的二维数组A的语句是(A=[a';b';c'])。
35.将二维数组A的偶数行全部元素赋0的语句是(A(2:
2:
end,:
)=0)。
36.将二维数组A的奇数列全部元素赋0的语句是(A(:
1:
2:
end)=0)。
37.将方阵A的的主对角线全部元素赋5的语句是(A(logical(eye(size(A))))=5或eye(N)*5)。
38.删除二维数组A的所有奇数行的语句是(A(1:
2:
end,:
)=[])。
39.删除二维数组A的所有偶数列的语句是(A(2:
2:
end,:
)=[])。
40.实现将3×3数组A扩充为6×6数组,扩充的元素用0填充的语句是(A(6,6)=0)。
41.绘制极坐标图形的Matlab库函数名是(polar)。
42.将图题设置成“Fig.1示意图”的语句是(title('Fig.1示意图'))。
43.将横坐标轴标签设置成“时间(秒)”的语句是(xlabel('时间(秒)'))。
44.设置图例的Matlab库函数名是(legend)。
45.绘制三维线图的Matlab库函数名是(plot3)。
46.绘制三维网格图的Matlab库函数名是(mesh)。
47.绘制三维表面图的Matlab库函数名是(surf)。
48.关闭网格显示的Matlab语句是(gridoff)。
49.关闭坐标架显示的Matlab语句是(axisoff)。
50.使得各坐标具有相同刻度间隔的Matlab语(axis('equal'))。
51.将三维图形视角设置成方位角60度、仰角45度的语句是(view(60,45))。
52.绘制二维等高线图的Matlab库函数名是(surfc)。
53.在同一图形窗口中开多个子窗口的Matlab库函数名是(subplot)。
选择题
1.执行语句x=55后,Matlab将创建变量x,为其分配的存储空间的大小为(C)
A)2字节B)4字节C)8字节D)16字节
2.执行语句y=66后,Matlab将创建变量y,其类型为(D)
A)int8B)int16C)singleD)double
3.下列整数类型中,不能参与任何运算的类型为(D)
A)int8B)int16C)int32D)int64
4.设已执行语句x=3>2;y=x>0后,下面表达式中错误的是(D)
A)x+yB)x-yC)x*yD)x/y
5.下列的数组写法中错误的是(C)
A)[1:
9]B)1:
9C)[1:
2:
9;2:
2:
8]D)[1:
3;4:
6;7:
9]
6.设有数组定义:
x=[1,2,3,4,5,6],y=x',下列表达式中正确的是(D)
A)y+xB)y-xC)y./xB)y*x
7.执行语句forx=1:
2:
10,disp(x),end,循环体将执行几次(B)
A)10次B)5次C)1次D)0次
8.函数首部格式为function[out1,out2]=myfunc(in1,in2),不正确的调用格式是(C)
A)[x,y]=myfunc()B)myfunc(a,b)C)[x,y]=myfunc(a)D)x=myfunc(a,b)
9.语句x=-1:
0.1:
1;plot([x+i*exp(-x.^2);x+i*exp(-2*x.^2);x+i*exp(-4*x.^2)]'),绘制(B)
A)1条曲线B)3条曲线C)21条曲线D)0条曲线
10.
计算
1.已知多项式
,
,写出2.计算下列问题的MATLAB命令序列
(1)
的根
解:
>>p1=[3,-1,2,1,3];
>>x=roots(p1)
x=
0.6833+0.9251i
0.6833-0.9251i
-0.5166+0.6994i
-0.5166-0.6994i
(2)
在闭区间[-1,2]上的最小值
解:
>>[y,min]=fminbnd(@(x)((1/3)*x.^3+x.^2-3*x-1),-1,2)
y=
1.0000
min=
-2.6667
(3)
和
的导数
解:
>>p1=[3,-1,2,1,0,3];
>>p2=[0,0,1/3,1,-3,-1];
>>p3=conv(p1,p2)
p3=
Columns1through5
001.00002.6667-9.3333
Columns6through10
2.3333-4.0000-4.00002.0000-9.0000
Column11
-3.0000
所以f(x)*g(x)=x^8+2.6667*x^7-9.3333*x^6+2.3333*x^5-4*x^4-a*x^3+2*x^2-9*x-3
>>p1=[3,-1,2,1,0,3];
>>k=polyder(p1)
k=
15-4620
3.用数值积分法计算下列积分,写出相应的MATLAB命令
(1)
(用梯形算法)
解:
>>x=linspace(-2,2);
>>y=x.^2.*exp(x).*cos(x./2);
>>I=trapz(x,y)
I=
9.1613
(1)
(用梯形算法)
解:
>>x=linspace(0,2);
>>y=x.^2.*exp(x);
>>I=trapz(x,y)
I=
12.7801
(2)
(用Simpson算法)
>>I=quad('log(sqrt(1+x.^2))',0,10)
I=
14.5467
(2)
(用Simpson算法)
解:
>>I=quad('sqrt(1+x.^2)',0,3)
I=
5.6526
(3)
(用Lobbato算法)
解:
>>I=quadl('((sin(x)).^2)./(x.^2+1)',0,2*pi)
I=
0.6011
4.写出计算级数
前n+1项和的命令序列,取n=500,x=π/5。
解:
>>n=0:
500;
>>x=pi/5;
>>S=sum(x.^n)
S=
2.6905
5.已知多项式P1(x)=x4-2x+1和P2(x)=x2+4x-0.5,写出完成下列任务的MATLAB命令序列。
(1)求两多项式的和P3(x)=P1(x)+P2(x)
解:
>>p1=[1,0,0,-2,1];
>>p2=[0,0,1,4,-0.5];
>>p3=p1+p2
p3=
1.000001.00002.00000.5000
(2)求多项式的积P4(x)=P2(x)×P3(x)和P4的导数和根
解:
>>p2=[0,0,1,4,-0.5];
>>p3=[1,0,1,2,0.5];
>>p4=conv(p2,p3)
p4=
Columns1through5
001.00004.00000.5000
Columns6through9
6.00008.00001.0000-0.2500
>>p4=[0,0,1,4,0.5,6,8,1,-0.25];
>>k=polyder(p4)
k=
620218161
>>p4=[0,0,1,4,0.5,6,8,1,-0.25];
>>x=roots(p4)
x=
-4.1213
0.5634+1.3057i
0.5634-1.3057i
-0.8282
-0.2985
0.1213
(3)在同一窗口绘制四个多项式的图,并添加标签为P1、P2、P3、P4图例。
x的取值范围[-1,1],步长0.01。
解:
>>x=-1:
0.01:
1;
>>p1=[1,0,0,-2,1];
>>p2=[0,0,1,4,-0.5];
>>y3=polyval(p3,x);
>>x=-1:
0.01:
1;
>>p1=[1,0,0,-2,1];
>>p2=[0,0,1,4,-0.5];
>>p3=[1,0,1,2,0.5];
>>y4=polyval(p4,x);
>>y1=polyval(p1,x);
>>y2=polyval(p2,x);
>>y3=polyval(p3,x);
>>y4=polyval(p4,x);
>>plot(x,y1,'r',x,y2,'b',x,y3,'g',x,y4,'k');
>>legend('p1','p2','p3','p4')
6.设有矩阵A和B,写出完成下列任务的MATLAB命令序列。
(1)求它们的乘积矩阵C
解:
>>A=[1,2,2,1;2,3,6,8;6,3,5,3;3,2,3,9;8,4,2,3];
>>B=[1,2,3,1,7,1;2,3,3,3,5,4;3,5,5,3,4,9;3,7,9,5,4,8];
>>C=A*B
C=
142528182935
50991176985132
366779458987
43901116379110
315973419666
(2)将矩阵C的右下角3×2子矩阵赋给D
解:
>>C=[14,25,28,18,29,35;50,99,117,69,85,132;36,67,79,45,89,87;43,90,111,63,79,110;31,59,73,41,96,66]
C=
142528182935
50991176985132
366779458987
43901116379110
315973419666
>>D=C(end-2:
end,end-1:
end)
D=
8987
79110
9666
(3)将矩阵B的中部的2×4子矩阵元素置0
>>B(2:
3,2:
5)=0
B=
123171
200004
300009
379548
(4)从A中选出所有大于4的元素,组成行向量赋给变量x
>>x=A(A>4)'
x=
686589
(5)将A中所有大于4的元素平方
>>A(A>4)=A(A>4).^2
A=
1221
233664
363253
32381
64423
7.已知
写出完成下列任务的MATLAB命令序列。
(1)当
时,求y的值
解:
>>a=0.3;
>>x=1+i*pi/4;
>>y=(exp(a*x)-exp(-a*x))/2*sin(x+a)+a*log((x+a)/2)
y=
0.2387+0.5433i
(2)取a=0.02,x在区间[0,12π],取样间隔为0.01,绘制函数曲线
解:
>>a=0.02;
>>x=0:
0.01:
12*pi;
>>y=((exp(a*x)-exp(-a*x))/2).*sin(x+a)+a*log((x+a)/2);
>>plot(x,y)
8.写出计算级数
前n+1项和的命令序列,取n=100,x=pi/3。
解:
>>x=pi/3;
>>n=100;
>>r=0:
2:
2*n;
>>sng=ones(size(r));
>>sng(2:
2:
end)=-1;
>>S=sum(sng.*x.^r./factorial(r))
S=
0.5000
9.判断下列线性方程组有唯一解,然后解之。
写出MATLAB命令序列。
(1)用矩阵表示为:
AX=B;
A=[2,-1,0,0,0;-1,2,-1,0,0;0,-1,2,-1,0;0,0,-1,2,-1;0,0,0,-1,2];B=[1;0;0;0;0];
(2)计算rank(A)和rank([A,B]),若两者相等,则存在唯一解;
rank(A)=5
rank([A,B])=5
(3)X=inv(A)*B,求出X的值。
X=inv(A)*B
10.设有多项式
和
.
(1)写出
和
的MATLAB表达式。
解:
>>p1=[40,46,7,46,36,0]
p1=
4046746360
>>p2=[0,0,0,8,6,-1]
p2=
00086-1
(2)写出两个多项式相乘积存入变量M的MATLAB表达式。
解:
>>p1=[40,46,7,46,36,0]
p1=
4046746360
>>p2=[0,0,0,8,6,-1]
p2=
00086-1
>>M=conv(p1,p2)
M=
Columns1through8
000320608292364557
Columns9through11
170-360
(3)写出多项式
除以
,并将商式存入变量A,余式存入变量B的MATLAB语句。
解:
>>p1=[40,46,7,46,36,0]
p1=
4046746360
>>p2=[8,6,-1]
p2=
86-1
>>[A,B]=deconv(p1,p2)
A=
5206
B=
000006
(4)写出多项式
的微分的MATLAB表达式。
解:
11.已知某信号电平的测量值为:
[0.9845,0.7676,0.1897,-0.4542,-0.8871,-0.9896,-0.8076,-0.4797,-0.1496,0.0888,0.20550.2189,0.1699,0.0998,0.0371,-0.0048,-0.0247,-0.0280,-0.0222,-0.0135,-0.0057]mV,以第一个数据测量点作为时间零点,每隔0.5秒测量一次。
用三次样条插值的方法完成如下操作:
(1)画出每隔1-毫秒的插值曲线图形,并将原始的数据画在同一图上。
命令序列:
t=0:
0.5:
10;
U=[0.9845,0.7676,0.1897,-0.4542,-0.8871,-0.9896,-0.8076,-0.4797,-0.1496,0.0888,0.20550.2189,0.1699,0.0998,0.0371,-0.0048,-0.0247,-0.0280,-0.0222,-0.0135,-0.0057];
ti=0:
0.01:
10;Ui=interp1(t,U,ti,'spline');
plot(t,U,'rp',ti,Ui,'bo-');
title('信号电平');
xlabel('t');ylabel('U');
legend('datapoints','interpolatepoints',1);
图形:
(2)估算6.6秒时的信号电平。
U=0.08605
绘图与程序
1.下面的程序段用来绘制如图的方形脉冲信号。
T=4;
N=512;
dt=T/N;
t=0:
dt:
(N-1)*dt;
x=zeros(1,N);
x(N/2-N/8:
N/2+N/8)=1;%BLANK%
plot(t,x,'linewidth',1.5);
axis([-inf,inf,-0.01,2]);
xlabel('t/s');
ylabel('x(t)');
2.下面的程序段用来绘制如图的球面和半球面。
[X,Y,Z]=sphere(30);
Xs=X/2;
Ys=Y/2;
Zs=Z/2;
Zs=Zs+1/2;
surf(Xs,Ys,Zs);
Z(Z>0)=eps;%BLANK%
holdon;
surf(X,Y,Z);
axisequal
axisoff
3.绘制顶角
,高
的圆锥沿轴和与轴垂直方向各截去
后所得到的圆台。
其中网线颜色为红色,母线的方程为
。
完成下面的程序。
alpha=pi/3;
h=100;
z=0:
h/10:
h;
r=(h-z).*tan(alpha);%BLANK%
[X,Y,Z]=cylinder(r,50);
Z=Z*h;
Z(Z>h/2)=h/2;
X(X<0)=0;
surf(X,Y,Z);%BLANK%;
colormap([1,0,0]);%BLANK%;
axisequal;
axisoff;
4.下面的程序实现了如下的函数定义,并且支持数组运算(自变量可以是一维行向量,返回由函数值组成的行向量)。
functionx=myfunc(t)
x=[];
forii=t
if(ii>=2&ii<=4)
temp=1-(ii-3)^2;
x=[x,temp];
elseif(0x=[x,0];
else
x=[x,nan];
end
end
5.下面的程序段用来绘制如图的外接圆为R,N边正多边形。
functiondrawP
R=10;
N=12;
drawPolygen(R,N);
%子函数
functiondrawPolygen(R,N)
delta=2*pi/N;
phi=0:
delta:
2*pi;
x=R.*cos(phi)%BLANK%
y=R.*sin(phi)%BLANK%
plot(x,y);
forii=1:
length(x)
line([x(i),x(i+1)],[y(i),y(i+1)]);%BLANK%
end;
b=R+1;
axis([-b,b,-b,b]);
axisequal;
axisoff;
6.求2~999中满足条件的数:
该数是素数且各位数字之和为奇数。
functionbv=mainfunc()
t=2:
299;
bv=[];
t=t(isprime(t));
fori=1:
length(t)
ifsubfunc(t(i))==1%BLANK%
bv=[bv,t(i)];
end;
end;
%子函数
functionv=subfunc(n)
bv=0;
s=0;
whilen>0
s=s+n%10;%BLANK%
n=fix(n/10);
end;
v=logical(rem(s,2));