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