插值滤波相关文档(含matlab代码)_第1页
插值滤波相关文档(含matlab代码)_第2页
插值滤波相关文档(含matlab代码)_第3页
插值滤波相关文档(含matlab代码)_第4页
插值滤波相关文档(含matlab代码)_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、上篇文字里面,我们说到了FIR滤波器,接下来我们在此处讨论一下插值滤波。这个话题属于多速率信号处理的范畴,经典的参考读物有杨小牛老师的软件无线电原理与应用以及 Fredric J. Harris 所著的 通信系统中的多采样率信号处理,这两位都是通信行业中的大腕,前者曾是中电科36所的所长,这个所在嘉兴,是国内电子对抗领域的翘楚。后面一位更加厉害,高通公司用他的名字在圣迭戈州立大学设立了一个奖学金。数字上、下变频是软件无线电领域里面非常重要的一个分支,以数字上变频来说,关键技术就是插值滤波和DDS技术。插值滤波技术,也叫做上采样,或采样率提升,为什么这个技术很重要呢,请自行搜索“软件无线电 插值

2、滤波器”。根据小牛老师的书,信号N倍插值之后的频谱会出现N个镜像。于是呢,需要用滤波器来把镜像频率除去,插值滤波器常用的有2个系列,FIR和CIC,其中FIR主要用于小倍率的插值,而CIC则用于大倍率的插值,比如说,参照以下ADI的经典芯片 AD9857,里面用FIR做了4倍插值,用CIC做2-63倍插值,这是因为FIR需要进行大量乘加,但是滤波性能好,而CIC不用乘法,但是只能抑制镜像频率附近的信号频带,并且CIC的通带内衰减较快,所以CIC适合用在高采样率的一端,关于CIC先不多说,此处专注FIR系列。贴一张小牛老师书里面的插图多速率FIR滤波器有两种说法,半带滤波器(halfband f

3、ilter)和多相滤波器,半带其实也是多相的一个特例,区别在于,如果进行2的N次幂的插值,我们通常用半带,因为乘法数量可以降为原来的1/4,而对于非基2的插值,我们就得用多相结构了。无论是半带还是多相,其实都是一种对原型滤波器的优化。噢,原型滤波器,对了,为了设计最终使用的滤波器,我们首先要有一个原型滤波器,然后根据这个原型滤波器再设计半带或是多相结构的滤波器,详情请自行拜读小牛爷爷的书吧,祖师爷的书最好还是买一本算是交了保护费嘛。此处的仿真过程大致如下,首先,生成一个多音正弦,然后进行补零的插值,然后把补零插值的信号塞到一个低通滤波器里面,这样就有三个版本的信号,原始信号,补零插值信号,以及

4、插值滤波之后的信号。注意此仿真的计算过程是概念上的理论模型,实际干活中不会这么做的,因为进入滤波器的数据里面包含的大量的0数据,把这种数据拿去做乘法是个非常亏本的事情,所以才会有半带啊,多相啊这种优化,嗯,不再赘述了,先看图吧,另外,吐槽一下,EDN网站啊,你是我们码农电工的乐园,尽管杂志是免费送的,网站是免费看到,博客是免费写的,您就不能支持一下清楚一点的图片么,您瞧我这几张时域频域信号图片寒碜的,我自己都觉得难受,实在不成您办个募捐,俺们捐点款给您买带宽买磁盘阵列也成啊。三个版本信号的时域图滤波器频响原始信号频谱补零插值信号频谱插值滤波信号频谱OK,上代码,请自行修改参数绘图,祝玩得开心%

5、/% FILE: test1.m% Simulation  of FIR interpolation%/close all;clear    ;clc      ;% specify input multi-tone sine component frequencysin_freq    = 1:3*20E3;data_len    = 2048  ;% signal data lengthfs   

6、60;      = 600E3 ;% sample ratequant_bits  = 12    ;% signal quant bitskaiser_beta = 8     ;% beta of kaiser winn_itp       = 3     ;% num of interpolationx_max_1x    = 3

7、0    ;% 1x signal time plot  x axis max valuen_coef      = 32    ;% number of coefficentsf     = 0, 0.2, 0.2, 1    ;m     = 1, 1  , 0  , 0    ;coeff = fir2(n_co

8、ef-1, f, m);% draw the filter reponse curvefreqz(coeff);x_max_itp   = x_max_1x * n_itp ;fs_itp      = fs * n_itp       ;% itp for abv of 'interpolation'data_len_itp= data_len * n_itp ;% generate original signalsignal_1x &#

9、160; = gen_quant_multi_sin(fs, sin_freq, data_len, quant_bits);% create zero filling interpolation signalsignal_itp  = zeros(data_len_itp,1);% write the original signal value into itp signal signal_itp(1:n_itp:data_len_itp-n_itp+1) = signal_1x;data_conv  = conv(coeff, signal_itp);filt

10、er_out = data_conv(1:data_len_itp);figure;subplot(3,1,1);stem(signal_1x , 'MarkerSize', 1.5); xlim(1 x_max_1x);tt_str = 'Signal 1x' title(tt_str , 'fontsize', 14);subplot(3,1,2);stem(signal_itp, 'MarkerSize', 1.5);xlim(1 x_max_itp);tt_str = strcat('Signal Itp

11、 ', num2str(n_itp), 'x'); title(tt_str, 'fontsize', 14);subplot(3,1,3);stem(filter_out, 'MarkerSize', 1.5);xlim(1 x_max_itp);tt_str = 'Filter Out' title(tt_str, 'fontsize', 14);kaiser_win_spectrum_plot(fs, signal_1x, kaiser_beta);ylim(-160,10)

12、60;    ;   % set y-axis range        title('signal 1x, Normalized Spectrum', 'fontsize', 14);kaiser_win_spectrum_plot(fs_itp, signal_itp, kaiser_beta);ylim(-160,10)     ;   % set y-axis ran

13、ge        title('Zero Interpolation, Normalized Spectrum', 'fontsize', 14);kaiser_win_spectrum_plot(fs_itp, filter_out, kaiser_beta);ylim(-160,10)     ;   % set y-axis range       

14、; title('Filter Out, Normalized Spectrum','fontsize', 14);% % CIC compensating filter design using frequency sampling method clear all close all % CIC filter parameters % R = 4; % Decimation factor M = 2; % Differential Delay N = 4; % Number of Stages B = 17; % Number of bits to

15、 represent fixed point filter coefficients Fs = 80e6; % (High) Sampling frequency in Hz (before decimation) Fc = 4e6; % Passband edge in Hz % fir2.m parameters % L = 30; % Order of filter taps; must be an even number Fo = R*Fc/Fs; % Normalized Cutoff freq; 0<Fo<=0.5/M; % Fo should be less than

16、 1/(4M) for good performance % Fo = 0.5/M; % use Fo=0.5 if we don't care responses outside passband % CIC Compensator Design using fir2.m % p = 2e3; % Granulatiry s = 0.25/p; % Stepsize fp = 0:s:Fo; % Passband frequency samples fs = (Fo+s):s:0.5; % Stopband frequency samples f = fp fs*2; % Noram

17、lized frequency samples; 0<=f<=1; Mp = ones(1,length(fp); % Passband response; Mp(1)=1 Mp(2:end) = abs( M*R*sin(pi*fp(2:end)/R)./sin(pi*M*fp(2:end).N; % Inverse sinc Mf = Mp zeros(1,length(fs); f(end) = 1; h = fir2(L,f,Mf); % Filter length L+1 h = h/norm(h); % Floating point coefficients hz =

18、floor(h*power(2,B); % Quantization of filter coefficients % Full resolution CIC filter response % hrec = ones(1,R*M); tmph = hrec; for k=1:N-1 tmph = conv(hrec, tmph); end; hcic = tmph; hcic=hcic/norm(hcic); % Total Response % hzp = upsample(hz,R); hp = upsample(h, R); ht = conv(hcic, hp); % Concate

19、nation of CIC and fir2 FIR at high freqency hzt = conv(hcic, hzp); % CIC + Fixed point fir2 at high frequency Hcic, wt = freqz(hcic, 1, 4096, Fs); % CIC Freq. Response Hciccomp, wt = freqz(hp, 1, 4096, Fs); % CIC Comp. response using fir2 Ht, wt = freqz(ht, 1, 4096, Fs); % Total response for CIC + f

20、loating point fir2 Hzt, wt = freqz(hzt, 1, 4096, Fs); % Total response for CIC + fixed point fir2 Mcic = 20*log10(abs(Hcic)/max(abs(Hcic); % CIC Freq. Response Mciccomp = 20*log10(abs(Hciccomp)/max(abs(Hciccomp); % CIC Comp. response using fir2 Mt = 20*log10(abs(Ht)/max(abs(Ht); % Total response for CIC + floating point fir2 Mzt = 20*log10(abs(Hzt)/max(abs(Hzt); % Total response for CIC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论