资源共享分类
通信信号 图像语音 神经网络 智能优化 控制器 数值仿真 数学建模 其他专业

微信:HuangL1121
Q Q:1224848052
团队:嘉兴麦特莱博软件开发工作室
地址:嘉兴港区
 
通信信号
简易自适应陷波滤波器设计与仿真|FPGA代做
来源:本站    日期:2018/7/11    浏览量:1445  

功能描述:

      在信号处理中经常要把某些单频(窄带)干扰信号去除,例如求系统采集信号中的把工频信号滤除。实际上有一个很好的方法,便是使用陷波器。在附件中给出了陷波器的设计技术,并举了例子。

陷波器是无限冲击响应(IIR)数字滤波器,该滤波器可以用以下常系数线性差分方程表示:


    由传递函数的零点和极点可以大致绘出频率响应图。在零点处,频率响应出现极小值;在极点处,频率响应出现极大值。因此可以根据所需频率响应配置零点和极点,然后反向设计带陷数字滤波器。考虑一种特殊情况,若零点在第1象限单位圆上,极点在单位圆内靠近零点的径向上。为了防止滤波器系数出现复数,必须在z平面第4象限对称位置配置相应的共轭零点、共轭极点

clear all;
clc;


b=[1 -sqrt(2) 1];
a=[1 -sqrt(2)*0.999 0.999];
[db, mag, pha, grd, w]=freqz_m(b, a);        
subplot(221); plot(w*200/pi, db); title(' Magnitude Response' );
xlabel('frequency in Hz'); ylabel('dB'); axis([0, 100, -200, 5]);
set(gca, 'XTickMode', 'manual', 'XTick', [0, 50, 100]); 
set(gca, 'YTickmode', 'manual', 'YTick', [-200, -100, 0]); grid
title('Notch filter response');
t0=1:8000;
t=1:256;
t1=1:100;
t2=1:128;
x=sin(2*pi*50*t0/400)+0.5*sin(2*pi*100*t0/400);
x1=x(t);
y=filter(b,a,x1);
subplot(222); plot(x1);
title('Original waveform');
X=fft(x1);
subplot(223); plot(t2*400/256,abs(X(t2)));
xlabel('frequency in Hz'); ylabel('|H|'); axis([0, 200, 0, 150]);
title('Spectrum for original');
set(gca, 'XTickMode', 'manual', 'XTick', [0, 50, 100, 150]); 
set(gca, 'YTickmode', 'manual', 'YTick', [50, 100]); grid
y=filter(b,a,x);
x1=y(t+7600);
X=fft(x1);
subplot(224); plot(t2*400/256,abs(X(t2)));
xlabel('frequency in Hz'); ylabel('|H|'); axis([0, 200, 0, 150]);
title('Spectrum after filter'); 
set(gca, 'XTickMode', 'manual', 'XTick', [0, 50, 100, 150]); 
set(gca, 'YTickmode', 'manual', 'YTick', [50, 100]); grid


figure(2);
subplot(611);plot(x(t1)); axis([1, 100, -1.5, 1.5]); ylabel('input x');
set(gca, 'YTickmode', 'manual', 'YTick', [-1,-0.5,0, 0.5,1]); grid
subplot(612);plot(y); axis([1, 100, -1.5, 1.5]); ylabel('first');
set(gca, 'YTickmode', 'manual', 'YTick', [-1,-0.5,0,0.5,1]); grid
subplot(613);plot(y); axis([401, 500, -1.5, 1.5]); ylabel('second');
set(gca, 'YTickmode', 'manual', 'YTick', [-1,-0.5,0, 0.5,1]); grid
subplot(614);plot(y); axis([1201, 1300, -1.0, 1.0]); ylabel('forth');
set(gca, 'YTickmode', 'manual', 'YTick', [-0.5,0, 0.5]); grid
subplot(615);plot(y); axis([2000, 2100, -1.0, 1.0]); ylabel('sixth');
set(gca, 'YTickmode', 'manual', 'YTick', [-0.5,0, 0.5]); grid
subplot(616);plot(y); axis([3601, 3700, -1.0, 1.0]); ylabel('tenth');
set(gca, 'YTickmode', 'manual', 'YTick', [-0.5,0, 0.5]); grid

figure(3);
subplot(611);plot(y); axis([4401, 4500, -1, 1]); ylabel('twelfth');
set(gca, 'YTickmode', 'manual', 'YTick', [-0.5,0, 0.5]); grid
subplot(612);plot(y); axis([5201, 5300, -1.0, 1.0]); ylabel('fourteenth');
set(gca, 'YTickmode', 'manual', 'YTick', [-0.5,0, 0.5]); grid
subplot(613);plot(y); axis([6001, 6100, -1.0, 1.0]); ylabel('sixteenth');
set(gca, 'YTickmode', 'manual', 'YTick', [-0.5,0, 0.5]); grid
subplot(212);plot(y); axis([7601, 7650, -1.0, 1.0]); ylabel('twentieth');
set(gca, 'YTickmode', 'manual', 'YTick', [-0.5, 0, 0.5]); grid


function data=trapper(data,f,sf,n);
for i=1:n
fi=i*f;
omg=2*pi*fi/sf;
num=[1 -2*cos(omg) 1];
den=[1 -2*0.999*cos(omg) 0.999];
data=filter(num,den,data);
end

function [db, mag, pha, grd,w]=freqz_m(b,a);
%Modified version of freqz subroutine

[H,w]=freqz(b,a,1000,'whole');
H=(H(1:501))'; w=(w(1:501))';
mag=abs(H);
db=20*log10((mag+eps)/max(mag));
pha=angle(H);
grd=grpdelay(b,a,w);

end


fpga代做,fpga专业代做,simulink代做,simulink专业代做

   上一篇: 简单的PCM编码MATLAB程序|FPGA代做-MATLAB代做    下一篇:    
   相关阅读
· MATLAB代做|FPGA代做|simulink代做—— 2020/7/14
· MATLAB代做|FPGA代做|simulink代做—— 2020/5/30
· MATLAB代做|FPGA代做|simulink代做—— 2020/5/30
· MATLAB代做|FPGA代做|simulink代做—— 2020/2/1
· MATLAB代做|FPGA代做|simulink代做—— 2019/12/11
· MATLAB代做|FPGA代做|simulink代做—— 2019/12/11
· MATLAB代做|FPGA代做|simulink代做—— 2019/12/11
· Alexnet网络结构 2019/11/20
· MATLAB代做|FPGA代做|simulink代做—— 2019/9/15
· MATLAB代做|FPGA代做|simulink代做—— 2019/8/29
Copyright 2017-2024 © 嘉兴麦特莱博软件开发工作室
  • 网站备案号:浙ICP备18008591号-1