声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3470|回复: 3

[编程技巧] 低通滤波程序——帮忙看看错在哪里

[复制链接]
发表于 2009-2-10 14:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
%频域低通和带通滤波
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear
clc
close all hidden
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fni=input('输入数据文件名:','s');
fid=fopen (fni,'r');
fs=100
fmin=fscanf (fid,'%f',1);  %最小截至频率
fmax=fscanf (fid,'%f',1);  %最大截至频率
fno=fscanf (fid,'%s',1);   %输出数据文件名
x=fscanf (fid,'%f',[1,inf]);%输入数据存入行向量
status=fclose(fid);
n=length(x);%数据长度
t=(0:1/fs:(n-1)/fs)';
nfft=2^nextpow2(n);
ni=round(fmin*nfft/sf+1);
na=round(fmin*nfft/sf+1);
y=fft(x,nfft);
a=zeros(1,nfft);
a(ni,na)=y(ni,na);
a(nfft-na+1:nfft-ni+1)=y(nfft-na+1:nfft-ni+1);
y=ifft(a,nfft);
y=(real(y(1:n)))';
%绘制滤波前的时程曲线
subplot(2,1,1);
plot(t,x);
%添加标注
xlable(sx);
ylable(sy);
grid on;
%绘制滤波后的时程曲线
subplot(2,1,2);
plot(t,y);
%添加标注
xlable(sx);
ylable(sy);
grid on;
%添加图例
legend('滤波前','滤波后');
%打开文件输出滤波后的数据
fid=fopen (fno,'w');
for k=1:n
    fprintf (fid,'%f%f\n',t(k),y(k));
end
status=fclose(fid);

运行之后出现
??? Error using ==> stateflow\private\sflibrary
Too many output arguments.

Error in ==> pinyu_ditong at 18
ni=round(fmin*nfft/sf+1);



如果有现成的低通滤波程序,能否共享?

[ 本帖最后由 luyunjun023 于 2009-2-10 14:41 编辑 ]

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2009-2-11 09:26 | 显示全部楼层
程序中设置采样频率为:
fs=100;
而在求ni和na时
ni=round(fmin*nfft/sf+1);
na=round(fmin*nfft/sf+1);
sf没有定义,故出了错误.

评分

1

查看全部评分

 楼主| 发表于 2009-3-13 17:04 | 显示全部楼层
thank you!
发表于 2010-8-23 16:00 | 显示全部楼层
里面有几处错误,不过思路是正确的
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-16 13:39 , Processed in 0.082187 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表