matlab练习题Word下载.docx
《matlab练习题Word下载.docx》由会员分享,可在线阅读,更多相关《matlab练习题Word下载.docx(25页珍藏版)》请在冰豆网上搜索。
)=[]%删除第二行元素
a
(1)=[]%删除一个元素,则矩阵变为行向量
a=[]%删除所有元素为空矩阵
9.设
和
求A-2B。
方法1:
A=[4-31;
205];
B=[120;
-103];
A-2*B
方法2:
b=uminus(2*B)%,返回2*B的相反数A+b
10.求30。
、60。
和90。
的正弦、余弦、正切和余切函数值。
x=30:
30:
90;
sind(x),cosd(x),tand(x),cotd(x)
11.求0.1,0.2,0.3,0.4,0.5,0.6的反正弦、反余弦和反正切值。
x=0.1:
0.1:
0.6;
asin(x),acos(x),atan(x)%返回值为弧度
asind(x),acosd(x),atand(x)%返回值为角度
12.求1到10的自然对数和常用对数。
x=1:
10;
log(x)%返回值为自然对数
log10(x)%返回值为常用对数
13.建立任意的两个字符串,并查看字符串占用的字节信息。
s1='
NortheastForestUiversity'
%赋值方式建立字符串s1
s2='
HaerbinHeilongjiang‘%赋值方式建立字符串s2
whos%查看字符串占用的字节信息
14.使用赋值语句依次为各个域赋值的方法建立构架数组,存储两名学生的名字、学号、性别、班级信息。
s.name='
WangMing'
;
s.number='
19990101'
s.sex='
man'
s.class='
199901'
s
(2).name='
ZhangLe'
s
(2).number='
19990201'
s
(2).sex='
s
(2).class='
199902'
15.已知A=[4,-65,-54,0,6;
56,0,67,-45,0],分析下列语句的功能。
(1)find(A>
4);
(2)[ij]=find(A,1);
(3)[ij]=find(A,1,'
first'
);
(4)[ij]=find(A,1,'
last'
(1)找出大于4的元素的序号。
(2)找出一个不为零的元素的行号、列号。
(3)找出第一个不为零的元素的行号、列号。
(4)找出最后一个不为零的元素的行号、列号
16.建立任意的3×
3的矩阵,并求出能被3整除的元素。
A=[103;
29-1;
-3-90];
%生成3×
3的矩阵A
P=rem(A,3)==0%判断A的元素是否可以被3整除
A(P)%求出被3整除的元素
17.已知
(1)
n为任意给定的整数,求y的值。
(2)
y≥1.5时,求n的值
%
(1)
y=0;
i=1;
n=input('
n=?
'
);
whilei<
=n
f=1/i/i;
y=y+f;
i=i+1;
end
y
%
(2)
while1
ify>
=1.5
break;
end
i=i+1;
i,y
18.设
,求:
a=0;
b=2*pi;
n=1000;
h=(b-a)/n;
x=a:
h:
b;
f=cos(x-pi/6).*sin(x+pi/6);
fori=1:
n
s(i)=(f(i)+f(i+1))*h/2;
y=y+s(i);
19.求[100,200]之间第一个能被13整除的整数。
forn=100:
200
ifrem(n,13)~=0
continue
break
20.使用for循环语句逐一显示构架数组的域值。
forii=1:
length(s)
disp(s(ii).name)
disp(s(ii).number)
disp(s(ii).class)
disp(s(ii).sex)
21.输出全部三位的水仙花数。
form=100:
999
m1=fix(m/100);
%求m的百位数字
m2=rem(fix(m/10),10);
%求m的十位数字
m3=rem(m,10);
%求m的个位数字
ifm==m1*m1*m1+m2*m2*m2+m3*m3*m3
disp(m)
22.编程求出Fibonacci数列中第一个大于10000的元素及序号。
%1
a
(1)=1;
a
(2)=1;
i=2;
whilea(i)<
=10000
a(i+1)=a(i-1)+a(i);
i,a(i)
%2
n=100;
a=ones(1,n);
fori=3:
a(i)=a(i-1)+a(i-2);
ifa(i)>
a(i),
end;
i
23.求某正整数范围内的全部素数。
1
m=input('
m='
p=1:
m;
p
(1)=0;
fori=2:
sqrt(m)
forj=2*i:
i:
m
p(j)=0;
n=find(p~=0);
p(n)
p=2:
n=find(rem(p,i)==0&
p~=i);
p(n)=[];
p
24.求1-100的平方、平方根和立方根
%方法1:
square=zeros(1,100);
square_root=zeros(1,100);
cube_root=zeros(1,100);
100
square(ii)=ii^2;
square_root(ii)=ii^(1/2);
cube_root(ii)=ii^(1/3);
%方法2:
ii=1:
100;
square(ii)=ii.^2;
square_root(ii)=ii.^(1/2);
cube_root(ii)=ii.^(1/3);
25.编程求3阶魔方矩阵大于5的元素的平方根。
a=magic(3);
size(a,1)
forjj=1:
size(a,2)
ifa(ii,jj)>
5
a(ii,jj)=sqrt(a(ii,jj));
a
b=a>
5;
%b是逻辑数组
a(b)=sqrt(a(b))
%如果要求同时对小于等于5的元素求平方呢?
修改的程序如下:
else
a(ii,jj)=a(ii,jj)^2;
a(b)=sqrt(a(b));
a(~b)=a(~b).^2;
26.求n!
n=1,2,…,10。
%定义函数文件factor:
functionf=factor(n)
ifn<
=1
f=1;
else
f=factor(n-1)*n;
return;
%返回
%编写下述的命令文件中调用函数文件factor.m:
%fori=1:
10
%fac(i)=factor(i);
%end
%fac
27.求函数f(x)=sin(x)+3在区间[25]的极小值。
f=inline('
sin(x)+3'
x=fminbnd(f,2,5);
x=fminbnd('
2,5);
sin(x)+3%f(x)在区间[25]的极小值
28.建立一数据文件,用于存放若干名学生的姓名和成绩。
Pleaseinputthenumberofstudent?
fid=fopen('
ss.txt'
'
w'
n=input('
name=?
s'
s=input('
score=?
fprintf(fid,'
%8s%6.1f\n'
n,s);
fclose(fid);
29.已知x=[-43,72,9,16,23,47],求向量x的最大值和最小值。
x=[-43,72,9,16,23,47]
y=max(x)%求向量x中的最大值
[y,l]=max(x)%求向量x中的最大值及其该元素的位置
z=min(x)%求向量x中的最小值
[z,m]=min(x)%求向量x中的最小值及其该元素的位置
30.分别求三阶魔方矩阵中各列和各行元素中的最大值,并求整个矩阵的最大值和最小值。
x=magic(3)
max(x)%矩阵x中各列元素中的最大值
max(x,[],2)%矩阵x中各行元素中的最大值
min(x)%矩阵x中各列元素中的最小值
min(x,[],2)%矩阵x中各行元素中的最小值
max(max(x))%整个矩阵的最大值
min(min(x))%整个矩阵的最小值
31.分析下列程序的功能。
x=[456;
148];
y=[175;
457];
p=max(x,y);
P
取两个2×
3的二维数组x和y同一位置上的元素值大者构成一个新矩阵p。
32.已知x=[1842;
9625;
3671],从不同维方向求出其平均值和中值。
x=[1842;
3671];
median(x)
median(x,1)%按列方向,求数组的中值
median(x,2)%按行方向,求数组的中值
mean(x)
mean(x,1)%按列方向,求数组的平均值
mean(x,2)%按行方向,求数组的平均值
33.已知x=[456;
148],分析矩阵x的每行、每列元素的乘积和全部元素的乘积。
sum(x)
sum(x,1)%求数组各列元素的和
sum(x,2)%求数组各行元素的和
sum(sum(x))%求数组所有元素的和
prod(x)
prod(x,1)%求数组各列元素的乘积
prod(x,2)%求数组各行元素的乘积
prod(prod(x))%求数组所有元素的乘积
34.已知a=[123;
396;
4108;
407],从不同维方向求出其标准方差。
a=[123;
407];
std(a)
std(a,0,1)%按公式1按列方向求矩阵a的标准方差
std(a,1,1)%按公式2按列方向求矩阵a的标准方差
std(a,0,2)%按公式1按行方向求矩阵a的标准方差
std(a,1,2)%按公式2按列方向求矩阵a的标准方差
35.已知a=[123;
407],对矩阵排序。
sort(a,1)
sort(a,1,'
ascend'
)%对矩阵a的各列进行升序排列
sort(a,2)%对矩阵a的各行进行排列
sort(a,2,'
)%对矩阵a的各行进行升序排列
descend'
)%对矩阵a的各列进行降序排列
)%对矩阵a的各行进行降序排列
36.分析下列语句的功能。
9101112;
13141516];
(1)flipud(a);
(2)fliplr(a);
(3)a=[1;
2;
6;
7;
8];
flipud(a)(4)a=[12678];
flipud(a)。
(1)上下方向翻转矩阵。
(2)水平方向翻转矩阵。
(3)列向量的上下方向翻转。
(4)行向量的上下方向翻转。
37.求矩阵a=[-211;
020;
-413]的特征值和特征向量
a=[-211;
-413];
[X,D]=eig(a)
38.求多项式
的根。
A=[1,8,0,0,-10];
x=roots(A)
39.求正弦、余弦函数在区间[01]内间隔为0.25的各点的值。
x=0:
1;
y1=sin(x);
y2=cos(x);
xi=0:
.25:
yi1=interp1(x,y1,xi),yi2=interp1(x,y2,xi)%线性插值方法
yi1=interp1(x,y1,xi,'
nearest'
),yi2=interp1(x,y2,xi,'
)%最邻近插值
40.已知
在[1,3]区间10个采样点的函数值,求
的4次拟合多项式p(x)。
x=linspace(1,3,10);
y=exp(x);
p=polyfit(x,y,4)
41.求
(1)建立被积函数文件fesin.m
functionf=fesin(x)
f=exp(-0.5*x).*sin(x+pi/6);
(2)调用数值积分函数quad求定积分
[S,n]=quad('
fesin'
0,3*pi)
42.求
(1)被积函数文件fx.m。
functionf=fx(x)
f=x.*sin(x)./(1+cos(x).*cos(x));
(2)调用函数quad8求定积分。
I=quad8('
fx'
0,pi)
43.在区间
内,绘制曲线
。
x=0:
pi/100:
2*pi;
y1=2*sin(2*x);
y2=3*sin(3*x);
plot(x,y1,x,y2)%在同一个坐标系分别绘制二维图形
title('
Thisisfigureofthethirdexample.'
%给图形加上标题
xlabel('
x'
%给x轴加标注
ylabel('
y'
legend('
2*sin(2*x)'
'
3*sin(3*x)'
);
%在当前图形上输出图例
44.绘制函数y=sinxcos2x的图形。
x=linspace(0,2*pi,30);
y=sin(x).*cos(2*x);
plot(x,y,'
r--'
)%红色虚线
y=sin(x)*cos(2*x)'
ylabel('
y=sinxcos2x'
grid
text(5.5,0,'
y=sinxcos2x'
)%在点(5.5,0)处放置文本y=sinxcos2x
45.绘制正弦、余弦、双曲正弦和双曲余弦三角函数的图形。
subplot(2,2,1);
ezplot('
sin(x)'
subplot(2,2,2);
cos(x)'
subplot(2,2,3);
sinh(x)'
sinh(x)'
subplot(2,2,4);
cosh(x)'
46.绘制向量(268785)的直方图
x=[123456];
y=[268785];
bar(x,y,0.5);
ExampleofaBarPlot'
axis([07010]);
47.绘制向量(1037566)的饼图。
data=[1037566];
explode=[01000];
pie(data,explode);
ExampleofaPiePlot'
One'
Two'
Three'
Four'
Five'
48.绘制向量(268785)的离散杆状图。
stem(x,y,'
filled'
ExampleofaStemPlot'
49.绘制三维网面
的图形。
x=-1:
0.05:
y=x;
[x,y]=meshgrid(x,y);
z=x.^2+2*y.^2;
surf(x,y,z)
symsxy;
f=x^2+y^2;
ezsurf(f)%-2≤x≤2,-2≤y≤2
%方法3:
ezsurf('
x^2+y^2'
[-1,1,-1,1])%-1≤x≤1,-1≤y≤1
50.绘制z=sinxcosx的三维网格曲面图。
0.15:
y=0:
z=sin(y'
)*cos(x);
mesh(x,y,z);
x-axis'
),ylabel('
y-axis'
),zlabel('
z-label'
3-Dmesh'
51.求下列极限。
极限1:
symsamx;
f=(x*(exp(sin(x))+1)-2*(exp(tan(x))-1))/(x+a);
limit(f,x,a)
ans=
(1/2*a*exp(sin(a))+1/2*a-exp(tan(a))+1)/a
极限2:
symsxt;
limit((1+2*t/x)^(3*x),x,inf)
exp(6*t)
极限3:
symsx;
f=x*(sqrt(x^2+1)-x);
limit(f,x,inf,'
left'
1/2
极限4:
f=(sqrt(x)-sqrt
(2)-sqrt(x-2))/sqrt(x*x-4);
limit(f,x,2,'
right'
-1/2
52.生成满足正态分布的10000×
5随机矩阵,然后求各列元素的均值和标准方差,再求这5列随机数据的相关系数矩阵。
X=randn(10000,5);
M=mean(X)
D=std(X)
R=corrcoef(X)
53.某观测站测得某日6:
00时至18:
00时之间每隔2小时的室内外温度(℃),用3次样条插值分别求得该日室内外6:
30至17:
30时之间每隔2小时各点的近似温度(℃)。
设时间变量h为一行向量,温度变量t为一个两列矩阵,其中第一列存放室内温度,第二列储存室外温度。
命令如下:
h=6:
18;
t=[18,20,22,25,30,28,24;
15,19,24,28,34,32,30]'
XI=6.5:
17.5
YI=interp1(h,t,XI,'
spline'
)%用3次样条插值计算
54.某实验对一根长10米的钢轨进行热源的温度传播测试。
用x表示测量点0:
2.5:
10(米),用h表示测量时间0:
60(秒),用T表示测试所得各点的温度(℃)。
试用线性插值求出在一分钟内每隔20秒、钢轨每隔1米处的温度TI。
h=[0:
60]'
T=[95,14,0,0,0;
88,48,32,12,6;
67,64,54,48,41];
xi=[0:
10];
hi=[0:
20:
TI=interp2(x,h,T,xi,hi)
55.函数x(t)=12sin(2π×
10t+π/4)+5cos(2π×
40t),取N=128,试对t从0~1秒采样,用fft作快速傅立叶变换,绘制相应的振幅-频率图。
N=128;
%采样点数
T=1;
%采样时间终点
t=linspace(0,T,N);
%给出N个采样时间ti(I=1:
N)
x=12*sin(2*pi*10*t+pi/4)+5*cos(2*pi*40*t);
%求各采样点样本值x
dt=t
(2)-t
(1);
%采样周期
f=1/dt;
%采样频率(Hz)
X=fft(x);
%计算x的快速傅立叶变换X
F=X(1:
N/2+1);
%F(k)=X(k)(k=1:
N/2+1)
f=f*(0:
N/2)/N;
%使频率轴f从零开始
plot(f,abs(F),'
-*'
)%绘制振幅-频率图
Frequency'
|F(k)|'
56.分别用Jacobi迭代和Gauss-Serdel迭代法求