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

📄 fir_filter_amp_delay.asv

📁 通信与系统仿真原理与无线应用第五章附录例5-11
💻 ASV
字号:
%File: FIR_Filter_AMP_Delay.m

function [h,times]=FIR_Filter_AMP_Delay(H,fs,n,fscale,fshift,...
    dscale)

%
% This function returns the impulse response of an FIR filter
% h=row vetor of impulse response values at t=times
% h is rotated to center the impulse response array at n/2*ts
% It is assumed that there is no 'constant delay' in the
%     freq response given
% H is 
ts=1/fs;df=fs/n;
%
Hfreq=H(:,1);
Hmag=H(:,2);
Hdelay=H(:,3);
nn=max(size(Hamg));
Hreal=10.^(Hmag/20);
Hfreq=(Hfreq-fshift)/fscale;
Hdelay=Hdelay/dscale;
%
%
index1=[0:1:(n/2)];
index2=[-(n/2)+1:1:-1];
index=[index1:index2];
frequencies=(index*df);
times=index*ts;
%
%
times=shift_ifft(times,n);
%
%
fmin=min(min(frequencies));
fmax=max(max(frequencies));
%
%
Hfreq1=Hfreq;
Hreal1=Hreal;
Hdelay1=Hdelay;
if fmin<Hfreq(1,1)
    Hfreq1=[fmin;Hfreq];
    Hreal1=[1e-10;Hreal];
    Hdelay1=[Hdelay(1,1);Hdelay];
end
if fmax>Hfreq(nn,1)
    Hfreq1=[Hfreq1;fmax];
    Hreal1=[Hreal1;1e-10];
    Hdelay1=[Hdelay1;Hdelay(nn,1)];
end
%
%
Hreal_interpolated=interp1(Hfreq1,Hreal1,frequencies);
Hdelay_interpolated=interp1(Hfreq1,Hdelay,frequencies);
%
%
sum=0.0;
Hphase(1)=0.0;
for k=2:(n/2)+2
    sum=sum+(Hdelay_interpolated(k,1)/ts)*(2*pi/n);
    Hphase(k,1)=sum;
end
sum=0.0;
for k=n:-1:(n/2)+2
    sum=sum+(Hdelay_interpolated(k,1)/ts)*(2*pi/n);
    Hphase(k,1)=sum;
end
Hcomplex=Hreal_interpolated.*exp(i*Hphase);
%
%
hh=ifft(Hcomplex);
h=(shift_ifft(hh,n));
%
%End of filter design and end of function file
    







⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -