浙江工商大学信号系统实验考题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一 MATLAB 基础知识
1. 矩阵的建立:方括号、逗号、冒号、分号、回车符
2. 矩阵的计算:加+、减-、乘*、除(除分为左除\、右除/)
例:B A B A 1,783664321,987654321-⎪⎪⎪⎭
⎫ ⎝⎛=⎪⎪⎪⎭⎫ ⎝⎛=求 >> A\B 3. 生成全是1的矩阵:ones(n,m)
例:ones(5) 生成的是什么?5行5列的1
例:若t=0:0.1:10,产生与t 同维的、元素全是1的向量:ones 、length >> t=0:0.1:10;
>> ones(1,length(t))或
4. 数组对应元素的加减乘运算:加+、减-、点运算“.*”、“./”、“.^”
5. 建立等间隔向量:冒号表达式e1:e2:e3与linspace(a,b,n)至少要掌握一种。
e1为初始值,e2为步长,e3为终止值
a 和
b 是生成向量的第一个和最后一个元素,n 是元素总数(linspace(a,b,n)与a:(b-a)/(n-1):b 等价)
6. 会在指定的区间画给定的函数:plot 、ezplot 、fplot 至少熟练掌握一种。
subplot 、title 、xlabel 、ylabel 要会用。
例:判断下列语句的对错
plot(‘sin(x)’); 错误 plot(sin(x));或plot(x,y);
ezplot(‘sin(x)’); 正确
fplot(‘sin(x)’) 错误
例:在0≤x ≤2区间内,绘制曲线 y=2e^(-0.5x)cos(4πx)
>> x=0:0.2:2;
>> y=2*exp(-0.5*x).*cos(4*pi*x);
>> plot(x,y)
例:画图:]2,0[,)3(sin )()3sin()(2π∈⎩
⎨⎧==t t t t y t t t x >> t=0:0.2:2*pi; >> y1=t.*sin(3*t);
>> y2=t.*sin(3*t).*sin(3*t);
>> plot(t,y1)
>> plot(t,y2)
例:将当前图形窗口分成4个绘图区,分别画f1,f2,f3,f4,并且标题、横坐标、纵坐标标注为“......”.
>> x=-2*pi:0.1:2*pi;
>> f1=sin(x);
>> f2=cos(x);
>> f3=2*sin(x)+cos(x);
>> f4=5*sin(x)-3*cos(x);(f 可换)
>> subplot(2,2,1)
>> plot(x,f1)
>> xlabel('t');ylabel('f1(t)'); title('f1(t)');
后几个同上
-------------------------------------------------------------------
小问题:
① 命令行结束时后面跟“,”和“;”有什么区别?表达式后面跟分号“;”,将不显示结果; 跟…,‟
或…回车‟,将显示表达式
② 符号j 和pi 表示什么?j: 虚数符号 pi: π
③ 指数函数x
e 如何表示?exp(x)
④ 如何清除Command Window 里的所有内容?clc 实验二 系统的时域分析实验
7. 已知微分方程,求其冲激响应和阶跃响应,并与各种响应的理论值进行比较:定义系统
函数tf 、计算冲激响应impulse 、阶跃响应step ;理论结果由试卷给出,学生不必计算(下同);比较用subplot 、figure 。
例:【例2-1】、【习题2-1】
【例2-1】设描述某二阶LTI 系统的微分方程为
()()()()56y t y t y t f t '''++= 计算系统的冲激响应和阶跃响应。
MATLAB 程序如下: num=[1]; % 定义系统传递函数的分子多项式系数
den=[1 5 6]; % 定义系统传递函数的分母多项式系数
sys=tf(num,den); % 定义系统函数
t=0:0.1:10; % 定义时间区间
y= impulse(sys,t); %计算系统的冲激响应
plot(t,y); % 画出系统的冲激响应
xlabel(‘时间t’); %定义横坐标
ylabel(‘冲激响应h(t)’); %定义纵坐标
title(‘单位冲激响应’); % 定义标题
y= step (sys,t); %计算系统的阶跃响应
plot(t,y); %画出系统的阶跃响应
xlabel(‘时间t’); %定义横坐标
ylabel(‘阶跃响应g(t)’); %定义纵坐标
title(‘单位阶跃响应’); %定义标题
【习题2-1】描述某二阶LTI 系统的微分方程为
()()()()()()5623y t y t y t f t f t f t ''''''++=++求其冲激响应和阶跃响应。
(同上只有num=[1 2 3]变化)
8. 已知微分方程、激励、初始条件,求其零状态响应,并与理论值进行比较(不要求零输
入响应和全响应):零状态响应lsim 。
例:【例2-2】、【习题2-2】
【例2-2】描述某系统的微分方程为 此列未阴影内容为【习题2-2】
()()()()56y t y t y t f t '''++= 求输入()()()2,0;02,01t
f t e t y y -'=≥==- 时 求输入()()()'
10cos ,0,02,00f t t t y y =≥== 时的零状态响应和全响应。
MATLAB 程序如下: 的零状态响应和零输入响应。
num=[1]; % 定义系统传递函数的分子多项式系数
den=[1 5 6]; % 定义系统传递函数的分母多项式系数
sys=tf(num,den); % 定义系统函数
t=0:0.1:10; % 定义时间区间
x=10*cos(t); x=2*exp-(t); y=lsim(sys,x,t);
plot(t,y); % 画出系统的阶跃响应
xlabel(‘时间t ’); %定义横坐标
ylabel(‘y_{zs}(t)’); %定义纵坐标
title(‘零状态响应’); %定义标题
[A,B,C,D] = tf2ss(num,den); %
sys=ss(A,B,C,D); % 定义系统函数
t=0:0.1:10; % 定义时间区间
x=10*cos(t); x=2*exp-(t); zi=[0 2]; zi=[-1 2]; y=lsim(sys,x,t,zi); y=lsim(sys,x,t,zi)-lsim(sys,x,t); plot(t,y); %画出系统的阶跃响应
xlabel(‘时间t ’); %定义横坐标
ylabel(‘y(t)’); %定义纵坐标
title(‘系统的全响应’); %定义标题 title(‘系统的零输入响应’) ;
9. 已知差分方程,求其单位序列响应h(k),并与理论值进行比较:计算单位序列响应
impz(b,a)。
离散序列画图用stem(x,y)。
例:【例2-4】
【例2-4】某离散LTI 系统的差分方程为
()()()()6512y k y k y k f k --+-=试计算其单位序列响应。
MATLAB 程序如下:
a=[6 -5 1]; %分母多项式系数向量
b=[1]; %分子多项式系数向量
impz(b,a); %计算单位序列响应
xlabel('时间k'); %定义横坐标
ylabel('h(k)'); %定义纵坐标
title('单位序列响应'); % 定义标题
-------------------------------------------------------------------
小问题:
⑤ 零状态响应y(k)与激励f(k)和单位序列响应h(k)是什么关系?y (k )=f(k)卷积h(k) ⑥ 已知差分方程,简述如何求单位阶跃响应g(k)?
1)先求单位阶跃响应h(k),再用conv 计算h(k)与ε(k)的卷积。
2)先求单位阶跃响应h(k),再利用循环实现∑==k
i i h k g 0)()(。
3)单位阶跃响应就是激励f(k)=ε(k)时的零状态响应,而零状态响应满足零初始条件的非齐次方程,可以通过循环计算这个非齐次方程(类似于【例2-5】计算全响应)。
⑦ impz (b,a)中的b,a 分别表示什么?a 是第一个序列的系数向量,b 是第二个序列的系
数向量
⑧ lsim (sys,x,t)中的x,t 分别表示什么?X 是系统的输入信号,t 定义的是时间范围 实验三 信号的卷积仿真实验
10. 计算连续信号f1(t)、f2(t)的卷积,并与理论值进行比较:利用exp1_sconv 函数(这
些函数由我们给定,但搜索路径要自己设)或自己编程实现卷积。
例:【习题3-1】
【习题3-1】对下面连续时间信号,用MATLAB 实现卷积运算
(1))(*)(23t e t e t t εε--% 计算 exp(-3t)ε(t)*exp(-2t)ε(t) d=0.01; %取样间隔d
[t1,f1]=exp1_exp0(0,10,d,1,-3,1); % f1=exp(-3t)ε(t)
[t2,f2]=exp1_exp0(0,10,d,1,-2,1); % f2=exp(-2t)ε(t)
[f,t]=exp1_sconv4(f1,f2,t1,t2,d);
t=t1;
subplot(2,2,4);
y=f2-f1; % 理论值 exp(-3t)ε(t)*exp(-2t)ε(t)=exp(-2t)ε(t)-exp(-3t)ε(t) plot(t,y);grid on;
xlabel('时间t');
ylabel('y(t)');
title('理论上的卷积exp(-3t)ε(t)*exp(-2t)ε(t)');
(3))(*)(t t t εε
ylabel('y(t)');
title('理论上的卷积0.5*t^2ε(t)');
(4)
)]2()([*)(---t t t e t εεε ⎪⎩
⎪⎨⎧>-<<-<=----=--------2]1[2
0100)2(]1[)(]1[)]2()([*)(2)2(t e e t e t t e t e t t t e t t t t t εεεεε % 计算 exp(-t)ε(t)*[ε(t)- ε(t-2)]
clear all; close all; clc;
d=0.01; %取样间隔d
[t1,f1]=exp1_exp0(0,10,d,1,-1,1); % f1=exp(-t)ε(t)
[t2,f2]=exp1_rectimpulse(1,2,0,10,d,1); % f2=ε(t)-ε(t -2)
[f,t]=exp1_sconv4(f1,f2,t1,t2,d);
t=t1;
subplot(2,2,4);
% 理论值是如下的分段函数:
% 1-exp(-t),0<t<2;
% exp(-t)*(exp(2)-1),t>2
t3=0:d:2
y1=1-exp(-t3);
t4=2+d:d:10
y2=exp(-t4)*(exp(2)-1);
y=[y1 y2];
plot(t,y);grid on;
xlabel('时间
t');
ylabel('y(t)');
title('理论上的卷积 exp(-t)ε(t)*[ε(t)- ε(t-2)]');
11. 计算离散信号f1(k)、f2(k)的卷积,并与理论值进行比较:利用exp1_dconv 函数或自己编程实现.
例:【习题3-2】
【习题3-2】对下面的离散时间信号,用MATLAB 实现卷积和运算
(2) )]3(-)([*)(-k k k k εεε
clc;
k1=0:20;
f1=k1;
k2=0:2;
f2=[1 1 1];
[f,t]=exp1_dconv4(f1,f2,k1,k2);
k=0:length(k1)+length(k2)-2;
subplot(2,2,4);
% 理论值
y0=0;
y(1)=1;
y(2)=3;
for i=3:length(k1)+length(k2)-2
y(i)=3*(i-1);
end
y=[y0 y];
stem(k,y,'filled');grid on;
xlabel('时间k');
ylabel('y(k)');
title('理论上的卷积 k ε(k)*[ε(k)- ε(k-3)]');
------------------------------------------------------------------
小问题:
⑨ stem(y)与stem(x,y)有什么区别? Stem(y):画离散序列的火柴梗图。
它总是从
k=1开始画(matlab 数组下标默认从1开始)。
stem(x,y):画(x1,y1),(x2,y2),…类似于plot()。
⑩ 如何设置搜索路径?
1)File 菜单中选Set Path ,选Add Folder 。
2)在命令窗口输入命令:path(path,'c:\mydir')。
'c:\mydir'为要设置的路径。
实验五 信号的频域分析
12. 画出给定非周期信号的fourier 变换(即频谱)和逆变换:fourier 、ifourier 、heaviside 、abs 函数.
例:【例5-1】、【例5-3】、【习题5-2】
【例5-1】双边指数的傅立叶变换:||2)(t e
t f -=
syms t
x=exp(-2*abs(t))
F=fourier(x)
subplot(211)
ezplot(x)
syms t
f=sin(t)./t;
F=fourier(f);
Y=F;
y=ifourier(Y); subplot(221);ezplot(f)
subplot(222);ezplot(F)
subplot(223);ezplot(Y)
subplot(224);ezplot(y)
【习题5-2】(2)对下列非周期信号,求其频谱图。
○
1()(2)f t t ε=- 说明:画出了阶跃函数作为对比,但这个并不作为要求。
clear all; close all; clc;
syms t; f=heaviside(t);
F=fourier(f); subplot(221);ezplot(f,[-1,1]); subplot(222);ezplot(abs(F));
f1=heaviside(t-2);
F1=fourier(f1);
subplot(223); ezplot(f1,[1,3]); subplot(224);ezplot(abs(F1));
clear all;close all;clc;
syms t; f=heaviside(t+1)-heaviside(t-1); F=fourier(f); subplot(221);ezplot(f); subplot(222);ezplot(F);
f1=cos(0.5*pi*t)*f; F1=fourier(f1);
subplot(223);ezplot(f1);
subplot(224);ezplot(F1);
○3()sin ()T
f t t
g t =Ω clear all;close all;clc;
syms t w;
T=2;W=pi/2;
f=heaviside(t+T/2)-heaviside(t-T/2);
F=fourier(f);
subplot(221);ezplot(f);grid on;
subplot(222);ezplot(F);grid on; f1=sin(W*t)*f;
F1=fourier(f1); subplot(223);ezplot(f1);grid on;
subplot(224);ezplot(abs(F1));grid on;
-------------------------------------------------------------------
小问题:
⑪ 如何定义多个符号变量? syms a b c ,多个符号变量之间用空格相分隔 ⑫ 如何使用axis 设置图形窗口的纵横坐标? axis[x 左,x 右,y 下,y 上] 实验六 信号的采样与恢复
13. 理解采样定理、采样频率、采样间隔等概念。
例:【习题6-3】
3、设()cos(650)2sin(720)a x t t t ππ=+ ,求 (1)该信号的那奎斯特频率是多少
(2)如果以两倍的奈奎斯特频率采样,采样序列中正弦波的数字频率是多少?
(3)在(2)中,得到40个采样点需要多长时间?试用stem 函数画出包含40个采样点的理想采样序列x(n).
解:
(1)max ()cos(2325)2sin(2360)
22360720 a Nyquist x t t t f f Hz ππ=⋅⋅+⋅⋅==⨯=
(2)22720
1440 s Nyquist f f Hz ==⨯=
xlabel('n');
ylabel('xn');
title('cos(650pi*nT)+2*sin(720pi*nT)')。