赞
踩
本文从一篇MATLAB来分析。
这篇文章实在稻壳阅读器上找到的,楼主已经完成了多相滤波器的verilog仿真设计后,希望找一段MATLAB看看,而发现的论文,名字叫做《多相滤波器的设计》,但里面没有论文作者等信息。
clc;clear all; n=0:999; x=sin(pi*n/4); figure;plot(x); title('输入信号'); wn=0.5; N=1000; xx=reshape(x,4,250); x1=xx(1,1:250); x2=xx(2,1:250); x3=xx(3,1:250); x4=xx(4,1:250); figure;subplot(4,1,1);plot(x1); subplot(4,1,2);plot(x2); subplot(4,1,3);plot(x3); subplot(4,1,4);plot(x4); title('四路输入信号'); hn=fir1(N-1,wn); h=hn(n+1); hh=reshape(h,4,250); h1=xx(1,1:250); h2=xx(2,1:250); h3=xx(3,1:250); h4=xx(4,1:250); H1=fft(h1,250); H2=fft(h2,250); H3=fft(h3,250); H4=fft(h4,250); H=fft(h); figure;plot(H); title('滤波器的频域波形'); figure;subplot(4,1,1);plot(H1); subplot(4,1,2);plot(H2); subplot(4,1,3);plot(H3); subplot(4,1,4);plot(H4); title('子滤波器的频域波形'); y1=conv(x1,h1); y2=conv(x2,h2); y3=conv(x3,h3); y4=conv(x4,h4); y=y1+y2+y3+y4; Y=fft(y); figure;subplot(3,1,1);plot(y); subplot(3,1,2);plot(Y); subplot(3,1,3);plot(abs(Y)); title('输出信号的时域、 频域波形');
其实有点心虚,楼主早已把大部分数字信号处理知识都还给了老师,在这份代码中,发现了一点问题,也不知道是楼主真的发现了问题,还是别人本来就是对的,自己错误理解,但也进行了以下修改,并添加了少量注释。
clc;clear all;close all; n=0:999; x=sin(pi*n/4); figure;plot(x); title('输入信号'); wn=0.5; N=1000; xx=reshape(x,4,250);%将x构建成新的数组,4行250列 x1=xx(1,1:250);%从xx的第1行第1列开始取250个数 x2=xx(2,1:250);%从xx的第2行第1列开始取250个数 x3=xx(3,1:250);%从xx的第3行第1列开始取250个数 x4=xx(4,1:250);%从xx的第4行第1列开始取250个数 figure;subplot(4,1,1);plot(x1); subplot(4,1,2);plot(x2); subplot(4,1,3);plot(x3); subplot(4,1,4);plot(x4); title('四路输入信号'); hn=fir1(N-1,wn); h=hn(n+1); hh=reshape(h,4,250); h1=hh(1,1:250); h2=hh(2,1:250); h3=hh(3,1:250); h4=hh(4,1:250); H1=fft(h1,250); H2=fft(h2,250); H3=fft(h3,250); H4=fft(h4,250); H=fft(h); figure;plot(H); title('滤波器的频域波形'); figure;subplot(4,1,1);plot(H1); subplot(4,1,2);plot(H2); subplot(4,1,3);plot(H3); subplot(4,1,4);plot(H4); title('子滤波器的频域波形'); y1=conv(x1,h1);%卷积将时域运算转换到了频域,任何 y2=conv(x2,h2);%一个线性系统的输出都可以将输入与 y3=conv(x3,h3);%系统函数做卷积获得,这里将输入与 y4=conv(x4,h4);%滤波器函数相卷积,实现了信号滤波 y=y1+y2+y3+y4; Y=fft(y); figure;subplot(3,1,1);plot(y); subplot(3,1,2);plot(Y); subplot(3,1,3);plot(abs(Y)); title('输出信号的时域、 频域波形');
从这段代码中,我们为能够很清楚的知道知道以下几个知识点:
1、原始数据如何进行多相分解的;
2、原始滤波器系数是如何被分成多个子滤波器系数的;
3、多相滤波完成后,数据是如何处理的。
我们要知道一点,多相分解的过程,其实类似于抽取的过程,N相的多相分解相当于抽取了N倍,速率降低了N倍,多相滤波后的数据相比原始数据速率,也降低了N倍。
上篇文章中,涉及到的后半部分,其实是对滤波器对称性分析,后面会有一篇文章,来着重讲解(翻译)下滤波器对称性,资源的节约。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。