Matlab实验指导书(含答案)详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一:Matlab操作环境熟悉
一、实验目的
1.初步了解Matlab操作环境。
2.学习使用图形函数计算器命令funtool及其环境。
二、实验内容
熟悉Matlab操作环境,认识命令窗口、内存工作区窗口、历史命令窗口;学会使用format命令调整命令窗口的数据显示格式;学会使用变量和矩阵的输入,并进行简单的计算;学会使用who和whos命令查看内存变量信息;学会使用图形函数计算器funtool,并进行下列计算:
1.单函数运算操作。
➢求下列函数的符号导数
(1) y=sin(x);
(2) y=(1+x)^3*(2-x);
➢求下列函数的符号积分
(1) y=cos(x);
(2) y=1/(1+x^2);
(3) y=1/sqrt(1-x^2);
(4) y=(x-1)/(x+1)/(x+2);
➢求反函数
(1) y=(x-1)/(2*x+3);
(2) y=exp(x);
(3) y=log(x+sqrt(1+x^2));
➢代数式的化简
(1) (x+1)*(x-1)*(x-2)/(x-3)/(x-4);
(2) sin(x)^2+cos(x)^2;
(3) x+sin(x)+2*x-3*cos(x)+4*x*sin(x);
2.函数与参数的运算操作。
➢从y=x^2通过参数的选择去观察下列函数的图形变化
(1) y1=(x+1)^2
(2) y2=(x+2)^2
(3) y3=2*x^2
(4) y4=x^2+2
(5) y5=x^4
(6) y6=x^2/2
3.两个函数之间的操作
➢求和
(1) sin(x)+cos(x)
(2) 1+x+x^2+x^3+x^4+x^5
➢乘积
(1) exp(-x)*sin(x)
(2) sin(x)*x
➢商
(1) sin(x)/cos(x);
(2) x/(1+x^2);
(3) 1/(x-1)/(x-2);
➢求复合函数
(1) y=exp(u) u=sin(x)
(2) y=sqrt(u) u=1+exp(x^2)
(3) y=sin(u) u=asin(x)
(4) y=sinh(u) u=-x
三、设计提示
1.初次接触Matlab应该注意函数表达式的文本式描述。
2.在使用图形函数计算器funtool时,注意观察1号和2号窗口中函数的图形。
四、实验报告要求
1.针对图形函数计算器funtool,对每一类型计算记录其中一个图形的曲线。
2.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。
实验二:M文件和Mat文件操作
一、实验目的
1.定制自己的工作环境。
2.编写简单的M文件。
3.保存内存工作区中的变量到.mat文件。
4.学会只用Matlab帮助。
二、实验内容
1.使用format命令和File|Peferences菜单定制自己的工作环境。
2.编写如下M文件,试调整参数a的大小,观察并记录y1、y2的波形特征。
%example1.m
t=0:pi/100:4*pi;
a=3;
y2=exp(-t/a);
y1=y2.*sin(a*t);
plot(t,y1,'-r',t,y2,':b',t,-y2,':b');
3.保存内存工作区变量a、t、y1、y2到example1.mat文件;关闭Matlab,再重新启动;观察内存工作区;重新根据.mat文件恢复原来的工作区变量。
4.在命令窗口中查看exp函数的帮助;运行helpwin查看超文本格式的帮助文件,试翻译并记录下信号处理工具箱(Signal Processing Toolbox)中的函数分类
(Functions -- Categorical List)。
三、设计提示
1.可以用命令语句、菜单或按钮等多种方式执行命令。
2.用于编辑M文件的文本编辑器还可以执行和调试程序。
3.不同的工具箱可能包含同名的函数,查看帮助时应注意在左侧栏选择相应的工具箱类别。
四、实验报告要求
1.对实验内容2,说明参数a的大小对y1、y2波形特征的影响。
2.翻译命令窗口中的exp函数的帮助信息。
3.运行helpwin,试翻译并记录下信号处理工具箱(Signal Processing Toolbox)中的函数分类(Functions -- Categorical List)。
4.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。
实验三:矩阵运算与元素群运算
一、实验目的
1.掌握数组与矩阵的创建。
2.掌握矩阵运算与数组运算。
3.掌握基本元素群运算。
4.掌握向量与矩阵的特殊处理。
二、实验内容
1.“:”号的用法。
用“:”号生成行向量a=[1 2 3 4 5 6 7 8 9 10]、b=[5 3 1 -1 -3 -5];
2.用线性等分命令linspace重新生成上述的a和b向量。
3.在100和10000之间用对数等分命令logspace生成10维的向量c。
4.生成范围在[0,10]、均值为5的3×5维的均匀分布随机数矩阵D。
5.利用magic函数生成5×5维的魔方矩阵,取其对角向量e,并根据向量e生成一个对角矩阵E。
(所谓魔方矩阵就是各行、各列、各对角线元素之和相等。
)6.另AA是3×3维魔方矩阵,BB是由A旋转180°得到。
CC是一个复数矩阵,其实部为AA,虚部为BB。
DD是CC的转置,EE是CC的共轭。
分别计算CC
和EE的模和幅角。
7.f是一个首项为20,公比为0.5的10维等比数列;g是一个首项为1,公差为3的10维等差数列。
试计算向量f和g的内积s。
8.生成一个9×9维的魔方矩阵,提取其中心的3×3维子矩阵M,利用sum函数检验其各行和各列的和是否相等。
9.已知
1234
2345
3456
4567
T
⎡⎤
⎢⎥
⎢⎥
=
⎢⎥
⎢⎥
⎣⎦
,利用函数生成左上三角矩阵
1234
2340
1
3400
4000
T
⎡⎤
⎢⎥
⎢⎥
=
⎢⎥
⎢⎥
⎣⎦。
三、设计提示
1.等比数列可利用首项和公比的元素群的幂乘积生成。
2.提取子矩阵,可灵活应用“:”号或空阵[ ]。
3.尽量用Matlab函数生成上述矩阵或向量,不要用手工逐个输入。
四、实验报告要求
1.编写实现第二节实验内容中所使用的函数命令,并记录相应的生成结果。
2.思考题:是否存在2×2维的魔方矩阵?。
3.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。
五,参考答案
1.代码:
a=1:10
b=5:-2:-5
a =
1 2 3 4 5 6 7 8 9 10
b =
5 3 1 -1 -3 -5
1.代码:
linspace(1,10,10)
linspace(5,-5,6)
ans =
1 2 3 4 5 6 7 8 9 10
ans =
5 3 1 -1 -3 -5
2.代码:
logspace(2,4,10)
ans =
1.0e+004 *
0.0100 0.0167 0.0278 0.0464 0.0774 0.1292 0.2154 0.3594 0.5995 1.0000
3.代码:
D=10*rand(3,5)
结果:
D =
0.1527 9.3181 8.4622 6.7214 6.8128
7.4679 4.6599 5.2515 8.3812 3.7948
4.4510 4.1865 2.0265 0.1964 8.3180
5.代码:
A=magic(5);
e=diag(A);
E=diag(e)
结果;
E =
17 0 0 0 0
0 5 0 0 0
0 0 13 0 0
0 0 0 21 0
0 0 0 0 9
6.代码:
AA=magic(3);
BB=rot90(AA,2);
CC=AA+j*BB;
DD=CC.';
EE=conj(CC);
A=abs(CC)
B=angle(CC)
C=abs(EE)
D=angle(EE)
结果:
A =
8.2462 9.0554 7.2111
7.6158 7.0711 7.6158
7.2111 9.0554 8.2462
B =
0.2450 1.4601 0.5880
1.1659 0.7854 0.4049
0.9828 0.1107 1.3258
C =
8.2462 9.0554 7.2111
7.6158 7.0711 7.6158
7.2111 9.0554 8.2462
D =
-0.2450 -1.4601 -0.5880
-1.1659 -0.7854 -0.4049
-0.9828 -0.1107 -1.3258
7.代码:
f=20*0.5.^(0:9);
g=1:3:28;
s=dot(f,g)
结果:
s =
158.6719
8.代码:
A=magic(9);
M=A(4:6,4:6);
sum(A,1)
sum(A,2)
结果:
ans =
369 369 369 369 369 369 369 369 369 ans =
369
369
369
369
369
369
369
369
369
9.代码:
T=[1,2,3,4;2,3,4,5;3,4,5,6;4,5,6,7]
A=rot90(T);
B=tril(A);
T1=rot90(B,-1)
结果:
T =
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7 T1 =
1 2 3 4
2 3 4 0
3 4 0 0
4 0 0 0
实验四:线性方程组的求解
一、实验目的
1.掌握恰定方程组的解法。
2.了解欠定方程组、超定方程组的解法。
3.掌握左除法求解线性方程组。
4.学会测试程序的运行时间。
二、实验内容
1.用两种方法求下列方程组的解,并比较两种方法执行的时间。
12345123451234512345
12345
7 149251003 151******** 92573005 7141624002 512114500
x x x x x x x x x x
x x x x x x x x x x
x x x x x +--+=⎧⎪----=⎪⎪
---++=⎨⎪+++-=⎪⎪-++--=⎩
2.判定下列方程是恰定方程组、欠定方程组还是超定方程组,并求其解。
12345123451234512345691411568147156294271244161111913103x x x x x x x x x x x x x x x x x x x x ++-+=⎧⎪+---=⎪⎨
-+-+-=-⎪⎪++--=⎩
3.用网孔电流法求如下电路的各支路电流。
4.用结点电压法求如下电路的结点电压u n1、u n2。
三、设计提示
1.在计算程序的执行时间之前,应注意用clear命令将内存变量清空。
2.求得线性方程组的解之后,代入原方程验证是否正确。
四、实验报告要求
1.编写实现第二节实验内容中所使用的函数命令,并记录相应的生成结果。
2.对于电路的求解,应列出相应的网孔方程和结点方程,并注意方向。
3.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。
五、参考答案
第一题:
A=[7,14,-9,-2,5;3,-15,-13,-6,-4;-11,-9,-2,5,7;5,7,14,16,-2;-2,5,12,-11,-4];
B=[100;200;300;400;500];
X=A\B
结果:
X =
370.9455
-224.7276
238.3333
-138.1891
503.6378
第二题:
A=[6,9,14,-11,5;1,14,-7,-15,-6;-2,1,-7,12,-1;6,11,11,-9,-13]; B=[68;294;-441;103];
X=A\B
结果:
X =
-26.3759
-5.4126
-38.3960
-8.2392
第三题:
A=[1,1,-1,1;0,20,40,0;60,0,40,0;0,0,40,40]; B=[0;10;50;-40];
X=A\B
X =
0.7857
0.3571
0.0714
-1.0714
实验五:函数编写与程序设计
一、实验目的
1.掌握函数的编写规则。
2.掌握函数的调用。
3.会用Matlab 程序设计实现一些工程算法问题。
二、实验内容
1.编写一个[y,y1,y2]=mwave(f1,m1,f2,m2)函数,实现以下功能,并绘出y1、y2、y 在t ∈[0,2π]区间500个样点的图形。
(其中调用参数2 ≤ f1、f2 ≤ 20 H Z ;0.5 ≤ m1、m2 ≤ 2)
11122212
sin(2);sin(2);y m f t y m f t y y y ππ===+ 2.程序设计:相传古代印度国王要褒奖他的聪明能干的宰相达依尔(国际象棋发明者),问他要什么?达依尔回答:“陛下只要在国际象棋棋盘的第一个格子上放一粒麦子,第二个格子上放二粒麦子,以后每个格子的麦子数都按前一格的两倍计算。
如果陛下按此法给我64格的麦子,就感激不尽,其他什么也不要了。
”国王想:“这还不容易!”让人扛了一袋麦子,但很快用光了,再扛出一袋还不够,请你为国王算一下共要给达依尔多少小麦?(1袋小麦约1.4×108粒)。
3.程序设计:公元前五世纪我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。
百钱买百鸡,问鸡翁、母、雏各几何?
三、设计提示
1.函数名和函数文件名应相同;对调用参数的取值范围要检验是否符合要求,如不符合要求,应给出出错信息(用if 和error 函数实现)。
2.程序设计——“百鸡问题”答案不唯一。
提示:设x :鸡翁数,则x 的范围:0~19;y :鸡母数,则y 的范围:0~33;z :鸡雏数,则z 的范围:0~100。
四、实验报告要求
1.编写实现第二节实验内容(1)所使用的函数文件。
2.程序设计用M 文件编写,并记录执行结果。
“百鸡问题”答案不唯一,要给出所有答案。
3.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。
五、参考答案
第1题:
function [y,y1,y2]=mwave(f1,m1,f2,m2)
% 根据给定的频率和幅值计算标准正弦函数y1、y2及其叠加y的波形。
if (f1<2)|(f1>20) error('f1超出范围!'), return, end if (f2<2)|(f1>20) error('f2超出范围!'), return, end if (m1<0.5)|(m1>2) error('m1超出范围!'), return, end if (m2<0.5)|(m2>2) error('m2超出范围!'), return, end % --------------------------------------------------- t=0:2*pi/(500-1):2*pi;
y1=m1*sin(2*pi*f1*t);
y2=m2*sin(2*pi*f2*t);
y=y1+y2;
figure
subplot(311); plot(t,y1); title('y1波形');
subplot(312); plot(t,y2); title('y2波形');
subplot(313); plot(t,y); title('y=y1+y2波形');
% =================================================== 第2题:
a=1;
s=0
for i=1:64
s=s+a;
a=2*a;
end
n=s/1.4/10^8
运行后得:n=1.3176e+011
第3题:
解设 x:鸡翁数,则x的范围:0~19
y:鸡母数,则y的范围:0~33
z:鸡雏数,则z的范围:0~100
则: x+y+z=100
5x+3y+z/3=100
这是一个欠定方程。
for x=0:19
for y=0:33
for z=0:100
if (x+y+z==100)&(5*x+3*y+z/3==100)
d=[x,y,z]
end
end
end
end
运行后得结果:
d = 0 25 75
d = 4 18 78 d = 8 11 81 d = 12 4 84
实验六:二维图形和三维图形的创建
一、实验目的
1.掌握二维图形的绘制。
2.掌握图形的标注
3.了解三维曲线和曲面图形的绘制。
二、实验内容
1.生成1×10维的随机数向量a ,分别用红、黄、蓝、绿色绘出其连线图、脉冲图、阶梯图和条形图,并分别标出标题“连线图”、“脉冲图”、“阶梯图”、“条形图”。
2.在同一个图形窗口中,绘制两条曲线()1221/2x
x y y ==、;并分别在靠近相应的曲线处标注其函数表达式。
3.编写一个mcircle(r)函数,调用该函数时,根据给定的半径r ,以原点为圆心画一个如图所示的红色空心圆。
(图例半径r=5)
4.(1)绘一个圆柱螺旋线(形似弹簧)图。
圆柱截面直径为10,高度为5,每圈上升高度为1。
如左图所示。
(2)利用(1)的结果,对程序做少许修改,得到如右图所示图形。
三、设计提示
1.Matlab 允许在一个图形中画多条曲线:plot(x1,y1,x2,y2,……)指令绘制
111222(),()y f x y f x ==等多条曲线。
Matlab 自动给这些曲线以不同颜色。
标注可用text 函数。
2.绘图时可以考虑极坐标和直角坐标的转换。
3.三维曲线绘图函数为plot3。
四、实验报告要求
1.编写实现第二节实验内容中所使用的函数命令,并对二-2记录相应的生成结果。
2.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。
五、参考答案 第一题
t=rand(1,10); figure(1) subplot(221); plot(t,'r'); title('连线图') subplot(222); stem(t,'y'); title('脉冲图'); subplot(223); stairs(t,'b'); title('阶梯图'); subplot(224); bar(t,'g');
title('条形图');
510
00.20.40.60.8
1连线图
510
00.20.40.60.8
1脉冲图
0510
0.5
1
阶梯图
12345678910
0.5
1
条形图
第二题:
x=1:1:50; y1=2.^x; y2=(1/2).^x; figure(1)
plot(x,y1,'r',x,y2,'g'); gtext('y1=2.^x'); gtext('y2=(1/2).^x');
5
10
15
20
25
30
35
40
45
50
02
4
6
8
10
12
14
x
第3题:
function [y,t]=mcircle(r)
% 根据给定的半径r ,以原点为圆心画一个红色空心圆。
t=0:2*pi/64:2*pi; y=r*ones(size(t));
subplot(121), polar(t,y,'*r') [X,Y]=pol2cart(t,y); % 或者采用如下方法转换 % X=r*cos(t); % Y=r*sin(t);
subplot(122), plot(X,Y,'*r') axis equal; axis square;
第4题:
t=0:pi/180:2*pi*5; r1=10/2;
x1=r1*cos(t); y1=r1*sin(t); z=t/(2*pi);
subplot(121), plot3(x1,y1,z) grid on
%--------------------------- r2=linspace(5,0,length(t)); x2=r2.*cos(t);
y2=r2.*sin(t);
subplot(122), plot3(x2,y2,z) grid on
实验七:Matlab 多项式和符号运算
一、实验目的
1.掌握Matlab 多项式的运算。
2.了解符号运算。
二、实验内容(边做实验,边将生成结果和图形拷贝到Word 文档中)
1.将多项式()(2)(3)(7)(1)P x x x x x =-+-+化为x 的降幂排列。
2.求一元高次方程的根。
9876543253015027313658204100576-28800x x x x x x x x x --++--++=
3.求一元高次方程的根,并画出左边多项式函数在[2,2]x ∈-区间内的曲线。
42210x x -+=
4.求多项式321()357f x x x x =+++和322()8642f x x x x =-+-的乘积()f x ;并求
12()()
()
f x f x f x -的商和余式。
5.求52tan(4)3y x x =++的符号导数。
6.用符号运算求实验内容4中的()f x 的表达式。
三、设计提示
1.关于多项式运算的函数有poly 、roots 等。
2.多项式做加减运算时要注意等长度。
3.符号表达式的输入可以用字符串方式,也可以用sym 函数。
四、实验报告要求
1.编写实现第二节实验内容中所使用的函数文件,并记录相应的生成结果和图形。
2.对于多项式的结果应以多项式向量和多项式表达式两种方式记录。
3.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。
五、参考答案
第1题:
P=poly([2,-3,7,-1]) 结果: P =
1 -5 -19 29 4
2 即:432()5192942P x x x x x =--++
第2题:
P1=[1 -5 -30 150 273 -1365 -820 4100 576 -2880]; x1=roots(P1) 结果: x1 =
5.0000 -4.0000 4.0000 -3.0000 3.0000 -2.0000 -1.0000 2.0000 1.0000
第3题:
P2=[1 0 -2 0 1]; x2=roots(P2) n=1;
for x=-2:0.01:2
y(n)=sum(P2.*(x.^[(length(P2)-1):-1:0])); % 或者 y(n)=x^4-2*x^2+1; n=n+1; end
x=-2:0.01:2; plot(x,y)
结果:(有重根!) x2 =
1.0000 + 0.0000i 1.0000 - 0.0000i -1.0000 + 0.0000i -1.0000 - 0.0000i
第4题:
f1=[1 3 5 7];f2=[8 -6 4 -2]; f=conv(f1,f2)
f11=[zeros(1,length(f)-length(f1)),f1] % 补0,与f 同维 [q,r]=deconv(f-f11,f2) 结果: f =
8 18 26 36 -28 18 -14 即:65432()8182636281814f x x x x x x x =+++-+- f11 =
0 0 0 1 3 5 7 q =
1.0000 3.0000 5.0000 6.8750
r =
0 0 0 0 -3.7500 -4.5000 -7.2500
第5题:
y='x^5+tan(4*x^2)+3';
diff(y)
结果:
ans =
5*x^4+8*(1+tan(4*x^2)^2)*x
第6题:
f1=sym('x^3+3*x^2+5*x+7');
f2=sym('8*x^3-6*x^2+4*x-2');
f=f1*f2
collect(f)
(f-f1)/f2
collect(ans)
结果:
f =
(x^3+3*x^2+5*x+7)*(8*x^3-6*x^2+4*x-2)
f =
8*x^6+18*x^5+26*x^4+36*x^3-28*x^2+18*x-14
h =
(-21+8*x^6+18*x^5+26*x^4+35*x^3-31*x^2+13*x)/(8*x^3-6*x^2+4 *x-2)
h =
(-21+8*x^6+18*x^5+26*x^4+35*x^3-31*x^2+13*x)/(8*x^3-6*x^2+4 *x-2)
实验八:线性时不变系统的时域响应
一、实验目的
1.掌握线性时不变系统的三种描述形式——传递函数描述法、零极点增益描述法、状态空间描述法。
2.掌握三种描述形式之间的转换。
3.掌握连续和离散系统频率响应的求解。
二、实验内容(边做实验,边将生成结果和图形拷贝到Word文档中)
1.生成20个点的单位脉冲信号、单位阶跃信号,并记录下函数命令和波形。
2.生成占空比为30%的矩形波。
3.将连续系统
(1)(3)
()0.5
(1)(2)(4)
s s
H s
s s s
-+
=
+++
转化为传递函数的形式,并显示其表
达式。
4.将离散系统
12
1234
352
()
1 1.6 1.30.90.5
z z
H z
z z z z
--
----
++
=
-+-+
转化为零极点增益的描述
形式,并显示其表达式。
5.分别求实验内容3和4的频率响应(对离散系统取256样点,采样频率取8000Hz)。
6.分别求实验内容3和4的单位冲激响应(对离散系统,作60样点图)。
三、设计提示
1.显示传递函数模型用tf(b,a);显示零极点增益模型用zpk(z,p,k)。
注意:z、p为列向量。
2.连续系统频率响应用freqs函数;离散系统用freqz函数。
3.连续系统冲激响应用impulse函数;离散系统用impz函数。
四、实验报告要求
1.编写实现第二节实验内容中所使用的函数文件,并记录相应的生成结果。
2.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。
五、参考答案
第一题:
k=-4:15
x =[zeros(1,4),1,zeros(1,15)]
subplot (1,2,1) stem(k,x)
y=[zeros(1,4),ones(1,16)] subplot (1,2,2) stem(k,y)
结果:
00.10.20.30.40.50.60.70.80.91
00.10.20.30.40.50.60.70.80.91
第二题
f=2;
t=0:0.001:2 w=2*pi*f*t
y=square(w,30) axis([0 2 0 2])
hold on plot(t,y)
结果:
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
00.20.40.60.811.21.41.61.8
2
第3题: k=0.5;
z=[1,-3]';
p=[-1,-2,-4]';
sys_zpk=zpk(z,p,k) [b,a]=zp2tf(z,p,k); sys_tf=tf(b,a) 结果:
Zero/pole/gain: 0.5 (s-1) (s+3) ----------------- (s+1) (s+2) (s+4)
Transfer function: 0.5 s^2 + s - 1.5
----------------------
s^3 + 7 s^2 + 14 s + 8
第4题:
b=[3 5 2];
a=[1 -1.6 1.3 -.9 .5];
systf=tf(b,a,'variable','z^-1')%显示传递函数
[z,p,k]=tf2zp(b,a);
syszpk=zpk(z,p,k,'variable','z^-1')%显示零点增益
结果:
Transfer function:
3 + 5 z^-1 + 2 z^-2
---------------------------------------------
1 - 1.6 z^-1 + 1.3 z^-
2 - 0.9 z^-
3 + 0.5 z^-4
Sampling time: unspecified
Zero/pole/gain:
3 z^-2 (1+z^-1) (1+0.6667z^-1)
-------------------------------------------------------------
(1 - 1.685z^-1 + 0.8654z^-2) (1 + 0.08497z^-1 + 0.5778z^-2) Sampling time: unspecified
第5题:
k=0.5;
z=[1,-3]';
p=[-1,-2,-4]';
[b,a]=zp2tf(z,p,k);
freqs(b,a)
结果:
b=[3 5 2];
a=[1 -1.6 1.3 -.9 .5];
freqz(b,a,256,8000) % Fs=8000结果:
第6题:
k=0.5;
z=[1,-3]';
p=[-1,-2,-4]';
sys3=zpk(z,p,k);
impulse(sys3)%频率响应
结果:
b=[3 5 2];
a=[1 -1.6 1.3 -.9 .5]; impz(b,a,60)
实验九:数字滤波器设计与语音信号处理
一、实验目的
1.掌握Butterworth 滤波器、Chebyshev Ⅰ型、Ⅱ型滤波器的设计,并能用于对语音信号子频带的提取。
2.了解FIR 滤波器的设计。
二、实验内容(边做实验,边将生成结果和图形拷贝到Word 文档中)
1.将Test1.wav 和Test2.wav 两个语音文件复制到C:\Matlab6p5\work\目录下。
2.设计一个4阶的Chebyshev Ⅱ型模拟高通滤波器,要求截止频率1kHz c f =,阻带纹波不超过-30dB 。
取采样频率10kHz s F =。
要求结果给出该滤波器的传递函数表达式,并画出该滤波器的频率响应曲线图。
3.设计一个6阶的Butterworth 数字带通滤波器,要求截止频率11000Hz c f =,
23000Hz c f =,取采样频率10kHz s F =。
要求结果给出该滤波器的传递函数表达式,并画出该滤波器的频率响应曲线图。
4.设计一个6阶的Butterworth 数字低通滤波器,从一段含噪声语音信号Test2.wav (0~4kHz ,Fs=8kHz )中提取出500Hz 以下的子带信号。
在一个图形窗口中分上下两个子窗口分别显示原始语音信号波形和滤波后的500Hz 以下子带信号波形。
5.设计一个65阶的FIR 数字滤波器,通带(归一化):0~0.45、0.65~0.85。
画出该滤波器的频率响应曲线图。
三、设计提示
1.设计滤波器时,注意频率的归一化。
2.Chebyshev Ⅱ型模拟高通滤波器设计,用函数cheby2(n,Rs,Wn,'high','s')。
其中Rs=30(即表示:阻带纹波不超过-30dB )。
3.设计IIR 带通或带阻滤波器时,若给滤波器函数的参数为n ,则设计出来的是2n 阶的滤波器。
4.设计高通滤波器,用'high'关键字;带通用'bandpass'关键字。
5.查看模拟滤波器的频率响应曲线用freqs 函数,查看数字滤波器的频率响应曲线用freqz 函数。
6.对于FIR 滤波器的设计,第一通带如果从0开始,则应加关键字'DC-1'。
四、实验报告要求
1.编写实现第二节实验内容所使用的M 文件,并在Word 文档中记录相应的生成结果和图形。
2.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。
五、参考答案
第2题:
fc=1000;
Fs=10000;
Wn=fc/(Fs/2); %归一化
n=4;
Rs=30;
[b,a]=cheby2(n,Rs,Wn,'high','s');
sys=tf(b,a)
freq s(b,a);
结果:
s^4 - 1.42e-017 s^3 + 0.04 s^2 - 2.938e-018 s + 0.0002 ------------------------------------------------------ s^4 + 0.6442 s^3 + 0.2475 s^2 + 0.05581 s + 0.006325
第3题:
fc1=1000;
fc2=3000;
Fs=10000;
Wn=[fc1,fc2]/(Fs/2); %归一化
n=6;
[b,a]=butter(n/2,Wn,'bandpass');
sys=tf(b,a)
freq z(b,a,512);
结果:
Transfer function:
0.09853 - 0.2956 z^-2 + 0.2956 z^-4 - 0.09853 z^-6
---------------------------------------------------------
1 - 1.366 z^-1 + 1.245 z^-
2 - 0.8777 z^-
3 + 0.6537 z^-
4 - 0.2256
z^-5 + 0.0563 z^-6
第4题:
[x,Fs,Bit]=wavread('Test2.wav');
Wn=500/(Fs/2); %归一化
n=6;
[b,a]=butter(n,Wn);
y=filter(b,a,x);
subplot(211); plot(x)
title('原始语音信号');
subplot(212); plot(y)
title('500Hz以下子带信号');
结果:
第5题:
n=65;
Wn=[0.45,0.65,0.85]; b=fir1(n,Wn,'DC-1'); a=1;
sys=tf(b,a)
freq z(b,a,512);
结果:
实验十:数字图像处理初步
一、实验目的
1.掌握图像文件的读取与写入。
2.掌握图像文件的显示、翻转、缩放、叠加
3.掌握黑白和彩色图像在Matlab中矩阵存储格式。
二、实验内容(边做实验,边将生成结果和图形拷贝到Word文档中)
1.将Test3.jpg和Test4.jpg两个图像文件复制到C:\Matlab6p5\work\目录下。
2.读取Test3.jpg到矩阵A中,观察A的维数,并显示该图像。
3.对A做一定的处理和变换,使之成为下面的图像,并存储到文件PicOut.bmp 中。
4.读取Test4.jpg到矩阵X中,去掉红色图层,然后显示出来。
三、设计提示
1.首先计算A的维数,然后列数放大1倍,再考虑将矩阵左半边的图像数据镜像到右半边去。
2.对于彩色图像,矩阵的维数是:行数×列数×图层数(1-红,2-绿,3-蓝)。
四、实验报告要求
1.编写实现第二节实验内容所使用的M文件,并记录相应的生成结果。
2.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。
五、参考答案
第3题:
A=imread('Test3.jpg');
figure(1);
imshow(A);
[x,y,z]=size(A);
B=A; %复制左边图像
B(:,[y+1:2*y],1)=fliplr(A(:,:,1)); %扩维并复制右边图像的红色图层(第一层)
B(:,[y+1:2*y],2)=fliplr(A(:,:,2)); %扩维并复制右边图像的红色图层(第二层)
B(:,[y+1:2*y],3)=fliplr(A(:,:,3)); %扩维并复制右边图像的红色图层(第三层)figure(2);
imshow(B);
imwrite(B,'PicOut.bmp');
结果:(略)
第4题:
X=imread('Test4.jpg');
figure(1);
imshow(X);
Y=X;
Y(:,:,1)=0;
figure(2);
imshow(Y);
结果:(略)。