>> ylabel('f(t)'),xlabel('Time(s)') >> title('激励信号的波形') >> subplot(212) >> plot(t,y),grid on
>> ylabel('y(t)'),xlabel('Time(s)') >> title('稳态响应的波形')
(2)频率响应为
MATLAB源程序:
>> t=0:0.01:20; >> w1=2;w2=5;
>> H1=((-i*w1+2)./((i*w1)^2+2*i*w1+3)); >> H2=(-i*w2+2)./((i*w2)^2+2*i*w2+3); >> f=3+cos(2*t)+cos(5*t);
>> y=3+abs(H1)*cos(w1*t+angle(H1))+abs(H2)*cos(w2*t+angle(H2)); >> subplot(211); >> plot(t,f);grid on
>> ylabel('f(t)'),xlabel('Time(s)') >> title('激励信号的波形') >> subplot(212); >> plot(t,y),grid on
>> ylabel('y(t)'),xlabel('Time(s)') >> title('稳态响应的波形')
第9章 信号抽样及抽样定理
9.1设有三个不同频率的正弦信号,频率分别为f=100Hz,f=200Hz,f=3800Hz。现在用抽样频率fs=4000Hz对这
1
2
3
三个正弦信号进行抽样,用MATLAB命令画出各抽样信号的波形及其频谱,并分析其频率混叠现象。
解:>> Ts=0.00025; >> dt=0.0001; >> t1=-0.1:dt:0.1; >> ft=sin(200*pi*t1);
>> subplot(221)
>> plot(t1,ft),grid on
>> axis([-0.01 0.01 -1.1 1.1])
>> xlabel('Time(sec)'),ylabel('f(t)') >> title('f1信号') >> N=100; >> k=-N:N;
>> W=pi*k/(N*dt);
>> Fw=ft*exp(-i*t1'*W)*dt; >> subplot(222)
>> plot(W,abs(Fw)),grid on >> axis([-5000 5000 -0.1 0.2]) >> t2=-0.1:Ts:0.1; >> fst=sin(200*pi*t2); >> subplot(223)
>> plot(t1,ft,':'),hold on >> stem(t2,fst),grid on >> axis([-0.01 0.01 -1.1 1.1])
>> xlabel('Time(sec)'),ylabel('fs(t)') >> title('抽样后的信号'),hold off >> Fsw=fst*exp(-i*t2'*W)*Ts; >> subplot(224)
>> plot(W,abs(Fsw)),grid on >> axis([-5000 5000 -0.1 0.2])
>> xlabel('\\omega'),ylabel('Fs(w)') >> title('抽样信号的频谱')
9.2结合抽样定理,用MATLAB编程实现Sa(t)信号经冲激脉冲抽样后得到的抽样信号fs(t)及其频谱,并利用fs(t)重构Sa(t)信号。
解:首先,画出Sa(t)信号的波形和频谱: >> syms t;
>> Sa(t)=(sin(t))/t; >> subplot(211)
>> ezplot(Sa(t)),grid on
>> xlabel('Time(sec)'),ylabel('Sa(t)') >> title('Sa(t)的波形')
>> Fw=simplify(fourier(Sa(t))); >> subplot(212)
>> ezplot(abs(Sa(t))),grid on
>> xlabel('\\omega'),ylabel('H(jw)') >> title('Sa(t)的频谱')
由图可知,Sa(t)的频谱大部分集中在[0,6]之间,设其截止频率为 ,因而奈奎斯特间
隔 ,采用截止频率 的低通滤波器对抽样信号滤波后重建信号 ,并计算重建信号与原Sa(t)信号的绝对误差: >> wm=6;
>> wc=1.2*wm; >> Ts=0.4; >> n=-100:100; >> nTs=n*Ts;
>> fs=sinc(nTs/pi); >> t=-6:0.1:6;
>> ft=Ts*wc/pi*fs*sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t)))); >> t1=-6:0.1:6; >> f1=sinc(t1/pi); >> subplot(311)
>> plot(t1,f1,':'),hold on >> stem(nTs,fs),grid on >> axis([-6 6 -0.5 1])
>> xlabel('nTs'),ylabel('f(nTs)');
>> title('抽样间隔Ts=0.4时的抽样信号f(nTs)') >> hold off >> subplot(312) >> plot(t,ft),grid on >> axis([-6 6 -0.5 1]) >> xlabel('t'),ylabel('f(t)');
>> title('由f(nTs)信号重建得到Sa(t)信号') >> error=abs(ft-f1); >> subplot(313)
>> plot(t,error),grid on
>> xlabel('t'),ylabel('error(t)');
>> title('重建信号与原信号的绝对误差')