Matlab基础练习题
常量、变量、表达式
1、 MATLAB中,下面哪些变量名是合法的?( )
(A)_num (B)num_ (C)num- (D)-num 2、 在MATLAB中,要给出一个复数z的模,应该使用( )函数。
(A)mod(z) (B)abs(z) (C)double(z) (D)angle(z) 3、 下面属于MATLAB的预定义特殊变量的是?( )
(A)eps (B)none (C)zero (D)exp
4、 判断:在MATLAB的内存工作区中,存放一个英文字符 'a' 需要占用1个字节,存放
一个中文字符‘啊’需要占用2个字节。( 错,都是2个字节 ) 5、 判断:MATLAB中,i和j都是虚数单位?1,它们之间没有什么区别。( 对 ) 6、 判断:MATLAB中,pi代表圆周率,它等于3.14。( 错,后面还有很多位小数 ) 7、 在MATLAB中,若想计算的y1?2sin(0.3?)1?5值,那么应该在MATLAB的指令窗中
输入的MATLAB指令是__y1=2*sin(0.3*pi)/(1+sqrt(5))_。
8、 在MATLAB中,a = 1,b = i,则a占_8__个字节,b占_16_个字节,c占________字
节。
9、 在MATLAB中,inf的含义是__无穷大__,nan的含义是__非数(结果不定)___。
数组
1、 在MATLAB中,X是一个一维数值数组,现在要把数组X中的所有元素按原来次序
的逆序排列输出,应该使用下面的( )指令。
(A)X[end:1] (B)X[end:-1:1] (C)X (end:-1:1) (D)X(end:1) 2、 在MATLAB中,A是一个字二维数组,要获取A的行数和列数,应该使用的MATLAB
的命令是( )。
(A)class(A) (B)sizeof(A) (C)size(A) (D)isa(A)
3、 在MATLAB中,用指令x=1:9生成数组x。现在要把x数组的第二和第七个元素都
赋值为0,应该在指令窗中输入( ) (A)x([2 7])=(0 0) (B)x([2,7])=[0,0] (C)x[(2,7)]=[0 0] (D)x[(2 7)]=(0 0)
4、 在MATLAB中,依次执行以下指令:clear;A=ones(3,4); A(:)=[-6:5];这时,
若在指令窗中输入指令b=A(:,2)',那么,MATLAB输出的结果应该是( ) (A)b = -3 -2 -1 (B)b = -2 -1 0 1 (C)b = -5 -1 3 (D)b = -5 -2 1 4
5、 在MATLAB中,A = 1:9,现在执行如下指令L1 = ~(A>5),则MATLAB的执行结果应
该是L1 =___ 1 1 1 1 1 0 0 0 0___。
6、 在MATLAB中,要求在闭区间[0,5]上产生50个等距采样的一维数组b,请写出具体
的MATLAB指令___linspace(0,5,50) ___。
7、 在MATLAB中,A = [0:1/2:2]*pi,那么sin(A) = ___[0 1 0 -1 0]_____。
8、 在MATLAB中,A=[1,2,3;4,5,6;7,8,0],B=[2,1,6;8,5,2;14,2,1]。写出下面MATLAB语句
执行的结果:(为节省篇幅,把矩阵写成mat2str的形式) (1) A==B [0 0 0; 0 1 0; 0 0 0] (2) A.*B [2 2 18;32 25 12;98 16 0] (3) A(:)' [1 4 7 2 5 8 3 6 0] (4) A(1,:)*B(:,3) 13
9、 在MATLAB中,写出下面MATLAB语句执行的结果:
(1) clear,A = ones(2,6) A =
1 1 1 1 1 1 1 1 1 1 1 1
(2) A(:) = 1:2:24 A =
1 5 9 13 17 21 3 7 11 15 19 23 (3) A([1:3:7]) ans =
1 7 13
(4) diag(diag(A)) ans =
1 0 0 7
(5) B = A(:,end:-1:1) B =
21 17 13 9 5 1 23 19 15 11 7 3 10、 请编写一段matlab程序,完成以下功能:
(1) 生成一个100行,200列的二维随机数组;
A=rand(100,200);
(2) 找出数组A中所有大于0.49且小于0.51的元素的单下标;
Idx=find(A(:)>0.49 & A(:)<0.51)
(3) 数组A中满足(2)中的条件的元素有多少个?
length(Idx)
(4) 求出数组A中满足(2)中的条件的元素的和,并求出这些元素的平均值;
sum(A(Idx)), m=mean(A(Idx))
(5) 将(4)求出的平均值赋值给数组A中满足(1)中的条件的每个元素。
A(Idx)=m;
11、 请编写一段matlab程序,完成以下功能:
(1) 找出100到200之间的所有质数,将这些质数存放在一个行数组里;
X=100:200;
p=X(isprime(X))
(2) 求出这些质数之和;
sum(p)
(3) 求出100到200之间的所有非质数之和(包括100和200)。
sum(X(~isprime(X)))
12、 y??0.7???2cosx?sinx ,编写一段matlab程序,要求如下
(1?x2)??(1) 在[0,2?]区间,每隔0.01取一x数值,计算出相应的y的函数值;
x=0:0.01:2*pi;
y=(0.7+2*cos(x)./(1+x.^2)).*sin(x)
(2) 根据MATLAB计算出的数据,找出在[0,2?]内该函数的极小值的坐标。
[my,idx]=min(y) x(idx)
数值计算
1、 在MATLAB中,A是一个10×10数组,我们把该数组看成矩阵的话,则此矩阵的行列
式值 = ___det(A)__,此矩阵的逆矩阵(如果存在的话) = _inv(A)___。(用MATLAB的函数表示) 2、 求解下列方程组:
?x1?x2?3x3?x4?2?x?x?x?1?234??x1?x2?2x3?2x4?4??x1?x2?x3?x4?0?3x?4y?7z?12w?4?5x?7y?4z?2w??3? ?x?8z?5w?9????6x?5y?2z?10w??8A=[1 1 3 -1;0 1 -1 1;1 1 2 2;1 -1 1 -1];
b=[2;1;4;0]; x=A\\b
A=[3 4 -7 -12;5 -7 4 2;1 0 8 -5;-6 5 -2 10]; b=[4;-3;9;-8]; xyzw=A\\b
3、 求有理分式R??x2?2x?2??5x?2x?1?32?3x3?x??x3?0.5?的商多项式和余多项式
n=conv([3 0 1 0],[3 0 0 0.5]); d=conv([1 2 -2],[5 2 0 1]); [q,r]=deconv(n,d)
424、 一元多项式p?2x?3x?4x,写出表示p的MATLAB语句__p=[2 0 -3 4 0]__,求
.3时p的数值的MATLAB语句p?0的根的MATLAB语句是____ roots(p)__,求x?4是__ polyval(p,4.3)___。
程序设计
1、 M脚本文件和函数文件的有什么区别?
最主要的差别是,函数有自己的独立工作区,和外界的信息交换通过输入输出参数实现;而脚本没有独立工作区,其直接使用宿主程序的工作区,并把结果留在宿主程序中。 2、 掌握下面程序设计中常用的函数及关键字:
input pause warning nargin nargout for while if elseif else switch case otherwise end try catch break continue end 3、 分别用for和while循环语句计算K??2的程序。还请写出一种避免循环的计算程
ii?063序。(不要用symsum函数) K=0; for i=0:63 K=K+i; end
K=0; i=0; while i<=63 K=K+i; i=i+1; end
K = sum(2.^(0:63))
4、 MATLAB提供了两种循环结构,一种是for循环结构,另一种是__while_循环结构。 5、 编写M函数求和s?1?2?3???n
function s=mysum(n) s = sum(1:n); 6、 编写M函数求积p?1?2?3???n
function p=mysum(n) p = prod(1:n);
7、 编写M函数列出从整数a到整数b之间能被3整除的奇数。
function r=odds3(a,b) r=a:b;
r=r(mod(r,2)==1&mod(r,3)==0)
8、 编写M脚本列出从100到200不能被3整除同时也不能被7整除的数。
X=100:200;
X(mod(X,3)~=0&mod(X,7)~=0)
9、 一张纸厚0.06mm且足够大,试问将纸对折多少次,其厚度将超过10000m?
按题意,就是要求2^n * 0.06E-3 >= 10000,所以 n = ceil(log(10000/0.06e-3)/log(2))
10、 编写MATLAB脚本输出“水仙花数”及水仙花数的个数。所谓“水仙花数”是一个3
位数,其各位数字的立方和等于该数本身。例如153?1?5?3。 c=0;
for n=100:999
m=[fix(n/100) fix(mod(n,100)/10) mod(n,10)]; if n==sum(m.^3),
fprintf('%i = %i^3 + %i^3 + %i^3\\n',n,m); c=c+1; end end
fprintf('\\n共%i个水仙花数\\n',c)
输出结果:
153 = 1^3 + 5^3 + 3^3 370 = 3^3 + 7^3 + 0^3 371 = 3^3 + 7^3 + 1^3 407 = 4^3 + 0^3 + 7^3
共4个水仙花数
333绘图
1、 MATLAB中,绘制三维曲面图的函数是( )
(A)surf (B)plot (C)subplot (D)plot3 2、 MATLAB中,要绘制三维空间曲线,应该使用( )函数。
(A)polar (B)plot (C)subplot (D)plot3
3、 在MATLAB中,A是一个1000行2列的二维数值数组,现在要把A的第一列数据作
为横坐标,把A的第二列数据作为纵坐标,画出一条曲线,试写出相应的MATLAB语句_____plot(A(:,1),A(:,2))______。
4、 MATLAB绘图指令中的__subplot_指令允许用户在同一个图形窗里布置几个独立的子
图。 5、 编写一段matlab程序,绘制出二元函数z?2sinxsiny三维网线图,要求如下:
xy(1)x,y的取值范围为?9?x?9,?9?y?9; (2)x,y每隔0.5取一个点;
(3)图形的线型和颜色由MATLAB自动设定