matlab上机题汇总.docx
《matlab上机题汇总.docx》由会员分享,可在线阅读,更多相关《matlab上机题汇总.docx(15页珍藏版)》请在冰豆网上搜索。
matlab上机题汇总
上机题汇总
2,在matlab的命令窗口里完成如下计算,其中t的值分别取-1,0,1,表达式如下:
解:
>>t=[-101]
t=
-101
>>y=sqrt(3)/2*exp(-4*t).*sin(4*sqrt(3*t)+pi/3)
y=
1.0e+004*
2.0897+1.2065i0.00010.0000
3自行产生一个5行5列的数组,得到最中间的三行三列矩阵。
解:
>>a=reshape(1:
25,5,5)
a=
16111621
27121722
38131823
49141924
510152025
>>i=[234];
>>j=[234];
>>a(i,j)
ans=
71217
81318
91419
4用magic产生一个5*5的矩阵,将这个矩阵的第二行与第三行互换位置
解:
>>a=magic(5)
a=
17241815
23571416
46132022
101219213
11182529
>>i=[13245];
>>a(i,:
)
ans=
17241815
46132022
23571416
101219213
11182529
5求方程组的根
x1+4x2-3x3=2
2x1+5x2-x3=11
x1+6x2+x3=12
解:
>>a=[14-3;25-1;161];
>>b=[2;11;12];
>>x=a\b
x=
4
1
2
6已知:
一个多项式的系数向量是p=[1-6-72-27],求这个多项式的根。
解:
>>p=[1-6-72-27]
p=
1-6-72-27
>>r=roots(p)
r=
12.1229
-5.7345
-0.3884
7已经两个多项式的系数分别是:
[1234]和[14916],请求这两个多项式的乘积,及商和余数。
解:
>>p1=[1234];
>>p2=[1496];
>>c=conv(p1,p2)
c=
162040555424
>>[q,r]=deconv(p1,p2)
q=
1
r=
0-2-6-2
8给定一个多项式的根是[-5-3+4i-3-4i],求原来的多项式
解:
>>r=[-5-3+4i-3-4i]
r=
-5.0000-3.0000+4.0000i-3.0000-4.0000i
>>p=poly(r)
p=
11155125
>>disp(poly2sym(p))
x^3+11*x^2+55*x+125
10补充题:
电路分析
电路分析常常涉及到对方程组的求解,这些方程常常是利用描述电流进入和离开节点的电流方程,或者描述电路中网络回路上的电压的电压方程得出的。
下图描述了3个回路电压的方程
方程式如下:
假设5个电阻值为已知,2个电压值也为已知,求3个电流值。
答:
A=[R1+R2–R20;-R2R2+R3+R4–R4;0–R4R4+r5];b=[V1;0;-V2];>>R=A\b
11自行产生一个5行5列的数组,用两种方法得到最中间的三行三列矩阵。
解:
>>a=reshape(1:
25,5,5)
a=
16111621
27121722
38131823
49141924
510152025
>>i=[234];
>>j=[234];
>>a(i,j)
ans=
71217
81318
91419
12根据a=reshape(-4:
4,3,3)做一个矩阵,然后
(1)取出所有大于0的元素构成一个向量(可推广到从一个矩阵里筛选出符合条件的元素组成一个向量)
(2)将原矩阵中大于0的元素正常显示,而小于等于0的元素全部用0来表示(可推广到将原矩阵中不符合条件的全用0来表示,符合条件的值不变)。
(思考:
大于0的正常显示,小于等于0的用-10来表示)
解:
>>a=reshape(-4:
4,3,3)
a=
-4-12
-303
-214
>>pos=(a>0)
pos=
001
001
011
>>a(pos)
ans=
1
2
3
4
>>pos=(a>0)
pos=
001
001
011
>>a(pos)
ans=
1
2
3
4
>>a.*pos
ans=
002
003
014
13建立如下一个元胞数组,现在要求计算第一个元胞第4行第2列加上第二个元胞+第三个元胞里的第二个元素+最后一个元胞的第二个元素。
a={pascal(4),'hello';17.3500,7:
2:
100}
解:
>>a={pascal(4),'hello';17.3500,7:
2:
100}
a=
[4x4double]'hello'
[17.3500][1x47double]
>>a{1}(4,2)+a{2}+a{3}
(2)+a{4}
(2)
ans=
131.3500
14建立一个结构体的数组,包括3个人,字段有姓名,年龄,分数,其中分数由随机函数产生一个3行10列的数据表示了有10门课程,每门课程有三个阶段的分数。
问题是:
问题1,如何找到第2个人的分数并显示出来
问题2,如何找到第2个人的每门课程3个阶段的平均分数并显示出来
问题3,全班同学(指这3个学生)的10门课程的每门课程的平均分如何计算出来?
要求放到一个数组里。
问题4,找到这个班所有同学的姓名放到一个元胞数组里
stud=struct('name',{'Jim','Henry','Smith'},'age',{22,18,26},'score',{int16(rand(3,10)*100),int16(rand(3,10)*100),int16(rand(3,10)*100)})
①stud
(2).score
②mean(stud
(2).score)
3meanscore=(mean(stud
(1).score)+mean(stud
(2).score)+mean(stud(3).score))/3
④cname={stud
(1).name,stud
(2).name,stud(3).name}
解:
student=struct('name',{'jim','henrry','smith'},'age',{22,18,26},'score',{int16(rand(3,10)*100),int16(rand(3,10)*100),int16(rand(3,10)*100)})
student=
1x3structarraywithfields:
name
age
score
>>student
(2).score
ans=
2938567685030681586
75475384387119307085
4542202834319543859
>>mean(student
(2).score)
ans=
40.666760.666752.666751.000063.000054.666722.666750.666741.000076.6667
>>meanscore=(mean(student
(1).score)+mean(student
(2).score)+mean(student(3).score))/3
meanscore=
58.111167.555642.777855.000061.222262.222246.000056.111135.444458.2222
>>cname={student
(1).name,student
(2).name,student(3).name}
cname=
'jim''henrry''smith'
15给定一个图像文件,格式是jpg,通过inportdata引入这个文件,查看引入后数据保存是一个数组,是100*100*3的一个数组,这是一个三维的数组,表明有100*100个点,每个点有RGB三个方面决定的。
现在,要求将这些点的中间部分30个象素宽度的正方形用黑点表示。
解:
>>a=importdata('1.jpg');
>>a([200:
300],[200:
360],:
)=0;
>>image(a)
16手动构造一个长宽页是1000*1000*3的图像,每个图像的点有三个0-255之间的随机值构成。
然后使用image函数显示这个图像,再用imwrite函数保存这个图像,使这个图像用图片浏览器也能够查看。
解:
imgdata=uint8(255*rand(1000,1000,3));
image(imgdata)
imwrite(imgdata,'myimg.jpg','jpg')
17给定一个矩阵
a=
123
456
编写一个M函数,要求输入是a,输出有三个:
平均数,标准差,秩。
程序运行后分析其性能指标(主要从时间上分析)
解:
functiony=mymean(a)
a=[123;456]
[h,w]=size(a)
s=0;
fori=1:
h
forj=1:
w
s=s+a(i,j)
end
end
y=s/(i*j);
18编写一个M函数,将一个给定图片文件里的白色全部换成另一种颜色,比如说:
将白色转成黑色。
a=importdata('1.jpg')
[m,n,p]=size(a);
fori=1:
m
forj=1:
n
fork=1:
p
ifa(i,j,k)==255;
a(i,j,k)=0;
end
end
end
end
image(a)
19要求编写一个M函数文件,完成求三角函数,x变化范围从-pi到pi,求出相应的y的值,并画出图,然后使用编译器生成EXE,脱离MATLAB环境运行。
解:
x=-pi:
0.01:
pi;
y=sin(x);
plot(x,y),grid;
20定义一个2*2的元胞数组,放入相应的数据,然后保存到MAT文件中,清除内存后,然后再调入内存。
查看数据是否改变。
解:
A={magic(5),'abc';15,rand(1,19)}
savefilea.mat
clearall
loadfilea.mat
21实验用图像:
pic.jpg.(注意,此图片是灰度图片,本题是针对灰度图片的处理)使用imread函数将图像读入Matlab。
根据产生灰度变换函数T1,使得:
0.3rr<0.35
d=0.105+2.6333(r–0.35)0.35≤r≤0.65
1+0.3(r–1)r>0.65
用T1对原图像pic.jpg进行处理,查看结果。
并打印出来。
解:
>>.a=imread('sy4.jpg')>>image(a)>>r=im2double(a)
>>b=[r<0.35].*0.3+[r<=0.65&r>=0.35].*(0.105+2.6333*(r-0.35))+[r>0.65].*(1+0.3*(r-1));>>image(b)>>imwrite(b,'syy.jpg')
22自己查阅资料找出中国近10年人口数,制成txt文件,格式如下:
199011.3456
199112.3566
…
然后将数据引入到内存,并绘制出相应的人口变化曲线图。
解:
1990123
199112
199232
199343
199534
199665
19973
199890
199980…
答:
>>loaddata.txt
>>[y,s]=textread('data.txt')
>>plot(y,s)
23使用通用读函数importdata读入一个声音文件hello.wav,将所有的数据反序排列后,播放声音,听效果,最后,将数据保存成另外的的声音文件名helloRev.wav。
解:
>>snd=importdata('x.wav');
>>sound(snd.data,snd.fs);
>>snd.data=snd.data([47541:
-1:
1])
>>wavwrite(snd.data,snd.fs,'y.wav')
>>sound(snd.data,snd.fs);
24海尔,联想,方正近四年销售的数据如下。
data=[3000,2334,3444,6663;2342,3422,2111,4453;3232,2334,5433,3500];请做出如下图表。
解:
data=[3000,2334,3444,6663;2342,3422,2111,4453;3232,2334,5433,3500];
subplot(1,2,[12]);bar(data);
title('各品牌销售比较图');
legend('2006','2007','2008','2009');
set(gca,'XTickLabel',['海尔';'联想';'方正'])
25已知在三维空间里,x,y,z的变化规律如下,试用plot3来做出其图形。
z=0:
0.1:
40;
x=cos(z).^2;
y=sin(z)+cos(z);
解:
z=0:
0.1:
40;
x=cos(z).^2;
y=sin(z)+cos(z);
subplot(2,2,[34]);
plot3(x,y,z)
gridon
xlabel('x')
ylabel('y')
zlabel('z')
title('SpiralPlot-usingPlot3')
1+。
。
。
。
1000?
sum=0;
fori=1:
1000
sum=sum+i;
end
str=['theresult:
',num2str(sum)];
disp(str)
7、画出衰减震荡曲线、、、、、、、、、t的取值范围是【0,4pi】
functionmyfun2
t=0:
pi/50:
4*pi;
y=exp(-t/3).*sin(3*t);
y0=exp(-t/3);
plot(t,y,'r-',t,y0,'b:
',t,-y0,'b:
');