有窄带滤波方面的高手么!(有偿)
本人一份报告需要对测试数据进行窄带滤波处理,需要这方面高手帮忙!愿意付一定的酬劳,有意者请给zgdky@hotmail.com信箱留言! MATLAB有现成的函数:fir1,设置好相应的参数即可。 仅供参考,如有不对,还请指正!!!设计了一个带噪声的正弦信号
clc;
clear all;
close all;
N = 20; % 每个周期的采样点数
a = 20; % 周期数
m1 = 1; % 输入信号的幅值
for n = 1:a*N
signal(n) = m1*sin(2*pi*(n-1)/N ) ; % 输入信号
end
snr = 30; % 设定加入白噪声后的信噪比
signal1 = awgn(signal,snr,'measured'); % 加入噪声后的信号
现在要给这个正弦信号设计一个窄带滤波器,对其进行滤波,其中Fs = 10KHZ
M = 20; % 滤波器的阶数
Fs = 10000; % 采样频率
fs1 = 350; fp1 = 450; fp2 = 550; fs2 = 650; % 通带和阻带边界频率
wp1 = 2*pi*fp1/Fs; ws1 = 2*pi*fs1/Fs; wp2 = 2*pi*fp2/Fs; ws2 = 2*pi*fs2/Fs; % 将频率转换成相位
wc1 = (ws1+wp1)/2/pi; wc2 = (wp2+ws2)/2/pi; % 截止频率取通带阻带边缘频率的平均值
wc = ;
hn = fir1(M,wc,blackman(M+1)); % 设计FIR滤波器
y = filter(hn,1,signal1); % 对带噪声的信号进行滤波
plot(y)
你直接设计频域滤波程序不就完事了吗???频域滤波程序你可以随意设计需要的上下限频率,岂不是更简单!!! 网上找的,希望给你带来帮助!!!空间滤波和频域线性滤波的基础都是卷积定理(针对线性系统):在使用MATLAB中的fft2函数实现傅立叶滤波时,分两种情况:①无填充时②有填充。①无填充。假设图像数据为f,直接调用fft2(f)进行FT滤波。>> f=zeros(256,256);>> f(1:128,:)=1;>> imshow(f)%生成简单图像>> =size(f)%获得图像尺寸>> F=fft2(f);%进行傅立叶滤波,无参数>> sigma=10;>> H=lpfilter('gaussian',M,N,sigma);%生成高斯低通滤波器,>> G=H.*F;%在频域将图像的FT和生成的滤波器点乘(由公式(1),再进行IFT,就可得到滤波后的图像)>> g=real(ifft2(G));%IFT,再取实部以还原图像>> figure,imshow(g,[])滤波后,图像边缘产生了模糊——这是预期的,低通滤波器就是能让图像模糊。但垂直边缘不模糊。其原因在于DFT计算中暗含的周期性。DFT将图像看成向四个方向(x,y轴正负向)延伸的无限周期序列。序列中,原图数据分别向四个方向延伸,可以想像其四周邻接的是什么图像。当滤波器下(同时存在)一块亮区域和暗区域时,滤波结果便得到模糊且变暗的图像。当滤波器位于序列图像的亮部时,它会遇到一个周期分量相同的区域,常数区域的平均值仍为常数,故不会产生模糊现象。②有填充的情形无填充时,会产生相邻周期之间的干扰(称为:折叠误差的干扰),可以通过使用0来填充函数的方法来避免。——冈萨雷斯《数字图像处理》>> PQ=paddedsize(size(f))%求取填充尺寸,如f(x,y)和h(x,y)的大小分别为AxB,CxD,则P≥A+C-1,Q≥B+D-1PQ = 512 512>> fp=fft2(f,PQ(1),PQ(2));%有填充的FT>> hp=lpfilter('gaussian',PQ(1),PQ(2),2*sigma);%低通滤波器>> gp=hp.*fp;%频域相乘>> gp2=real(ifft2(gp));%IFT求取原图像>> figure>> imshow(gp2,[])>> gpc=gp2(1:size(f,1),1:size(f,2)); %将左上部的矩形修剪为原始大小>> figure>> imshow(gpc,[])
直接用工具箱设计滤波器... 红轮 发表于 2016-6-28 23:02
直接用工具箱设计滤波器...
怎么操作具体说说呗像楼上一样把程序贴出来
页:
[1]