⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hc971.m

📁 书籍中包含的第三部分实例的matlab代码
💻 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 + -