📄 hc972.m
字号:
%《数字信号处理教程——MATLAB释义与实现》第四章例9.7.2程序hc972
% 降低采样率(抽取)信号的生成
% 电子工业出版社出版 陈怀琛编著 2004年9月
%
Nx=100;
M=5;
fsx=5;T=1/fsx;
alpha=0.5;nx=0:Nx-1; % 设定x的自变量向量
nm=floor(nx-Nx/2+0.5);
x=exp(-alpha*nx*T); % 给出x序列的值
Ny=ceil(Nx/M);ny=0:Ny-1;
nym=floor(ny-Ny/2+0.5);
b=[0,0.0019,0.0203,0.0772,0.1589,0.2,0.1589,0.0772,0.0203,0.0019,0]; %用例733的滤波器系数
x1=filter(b,1,x); % 进行滤波,得出x1
y1=x1(1:M:Nx); % 实行抽取,给出y序列在x对应点处的值
%y1=resample(x,1,M);
y2=exp(-alpha*ny*T*M);
X=fftshift(fft(x)); % 求x频谱,并移到对称位置
X1=fftshift(fft(x1)); % 求y频谱,并移到对称位置
Y1=fftshift(fft(y1)); % 求y1频谱,并移到对称位置
Y2=fftshift(fft(y2)); % 求y2频谱,并移到对称位置
subplot(4,2,1),stem(nx,x,'.') % 以下绘图
xlabel('nx'),ylabel('原始序列x') %
title('时域波形') %
axis([0,100,0,1.2])
subplot(4,2,3),stem(nx,x1,'.') %
xlabel('nx'),ylabel('x经滤波=x1') %
axis([0,100,0,1.2])
subplot(4,2,5),stem(ny,y1,'.') %
xlabel('ny'),ylabel('x1经抽取=y1') %
axis([0,20,0,1.2])
subplot(4,2,7),stem(ny,y2,'.') %
xlabel('ny'),ylabel('直接抽取y2') %
axis([0,20,0,1.2])
subplot(4,2,2),stem(nm*2*pi*fsx/Nx,abs(X),'.') %
xlabel('\Omega'),ylabel('abs(X)') %
title('与左图对应的频谱形状') %
subplot(4,2,4),stem(nm*2*pi*fsx/Nx,abs(X1),'.') %
xlabel('\Omega'),ylabel('abs(X1)') %
subplot(4,2,6),stem(nym*2*pi*fsx/M/Ny,abs(Y1),'.') %
axis([-fsx*pi,fsx*pi,0,2])
xlabel('\Omega'),ylabel('abs(Y1)') %
subplot(4,2,8),stem(nym*2*pi*fsx/M/Ny,abs(Y2),'.') %
xlabel('\Omega'),ylabel('abs(Y2)') %
axis([-fsx*pi,fsx*pi,0,4])
set(gcf,'color','w') % 置图形背景色为白
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -