Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
 
 
主题工具 显示模式
旧 2009-03-01, 14:38   #1
skaly2008
初级会员
 
注册日期: 2009-02-15
年龄: 34
帖子: 1
声望力: 0
skaly2008 正向着好的方向发展
默认 matlab过滤器的缺点?

matlab过滤器的缺点?
最近找了一个过滤器,发现滤波器还是有问题啊。。。别的不说,请看代码:
clear;
fc1=22999;%通带下限截止频率fc1=22999 Hz
fc2=23001;%通带上限截止频率fc2=23001 Hz
fs=102400;%采样频率fs=102400Hz
N= 50000;%采样点数目
t = (0:N)/fs;
f1=5000;
f2=15000;
f3=30000;
f4=23000;
f5=50000;
f6=60000;
s1=CreateLine(f1,t);
s2=CreateLine(f2,t);
s3=CreateLine(f3,t);
s4=CreateLine(f4,t);
s5=CreateLine(f5,t);
s6=CreateLine(f6,t);
s=s1+s2+s3+s4+s5+s6;
sf = beltfilter(s,fs,20,fc1,fc2);%对信号s进行滤波
figure(1);
subplot(311);
plot(t,s);%作正弦信号的时域波形
xlabel('t');
ylabel('y');
title('原混合波形');
figure(1);
subplot(312);
xl=length(sf);
t=t(1:xl);
plot(t,sf);%作正弦信号的时域波形
xlabel('t');
ylabel('y');
title('过滤后波形');
subplot(313);
s3=s3(1:xl);
plot(t,s3);%作正弦信号的时域波形
xlabel('t');
ylabel('s3');
title('原波形');
N=xl;
xf = 2*abs(fftn(sf))/N;
xf = xf(1:N/2);
df = fs/N; %频率分辨率Hz
f = (0:N/2-1)*df; %频域序列
cMax = max(xf) ;
figure(2);
subplot(1,1,1);
plot(f, xf);
xlabel('f/Hz');
f(find(xf>=max(xf)))

CreateLine:
%创建一个序列,随机把一些连续值清空
%a-频率
%t-采样时间点序列
function xl=CreateLine(a,t)
N=length(t);
%振幅
iZF=fix(100*rand);
%初始相位
iCSXW=rand;
%开始清除点
iStart=fix(N*rand);
%结束清除点
iStop=fix(N*rand);
%使iStart<iStop
if iStart>iStop
iTmp=iStop;iStop=iStart;iStart=iTmp;
end;
xl=iZF*sin(a*2*pi*t+iCSXW);
for k=iStart:iStop
xl(k)=0;
end;

beltfilter注:网上找到的)
%带通滤波
%x-输入信号
%fs-输入信号采样频率
%M-滤波器半阶数
%fl-下截止频率
%fh-上截止频率
%xl-返回的滤波结果,其长度为原序列长度减少2M,去掉了前M和后M个不正确的点
function xl=beltfilter(x,fs,M,fl,fh)
N=length(x)-2*M;
[i j]=size(x);
if i~=1
x=x';
end
k=1:M;
w=0.5+0.5*cos(pi*k/M);
wl=2*pi*fl/fs;
wh=2*pi*fh/fs;
h(1)=(wh-wl)/pi;
h(2:M+1)=(sin(wh*k)-sin(wl*k))./(pi*k).*w;
for k=1:N
kk=k-1+M;
xl(k)=x(kk+1)*h(1)+sum(h(2:M+1).*(x(kk+2:kk+M+1)+x(kk:-1:kk-M+1)));
end
if i~=1
xl=xl';
end

大家看看结果就知道了$$$$

skaly2008 当前离线   回复时引用此帖
 

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


相似的主题
主题 主题作者 版面 回复 最后发表
[求助] xierui MATLAB论坛 0 2009-03-13 11:09
[求助]请求大侠解答简单问题 fenyun MATLAB论坛 1 2009-02-11 03:13
[资料]神经网络课程讲稿(北工大) jinjinai2008 MATLAB论坛 2 2008-12-15 14:47
[求助]如何用FFT从数据序列中提取相位信息? leechau Origin论坛 0 2008-11-05 21:50
【求助】这个微分方程怎么写成函数文件呢? grasszhang MATLAB论坛 0 2007-08-30 15:25


所有时间均为北京时间。现在的时间是 13:29


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.