Matlab中的滤波函数filter的代码
Matlab中滤波函数filter是一个Built-in function函数,根据标准算法实现的C代码执行时间是matlab的3-4倍,Octave中的filter函数执行时间也是matlab的3倍左右,有谁知道matlab中filter函数的具体实现代码? filter这个函数是matlab工具箱里面有的,直接调用使用就可以了啊,你要他做什么啊! 本帖最后由 impulse 于 2012-4-23 17:26 编辑我要做我自己的C版本函数,用于信号分析和仪器开发,不能什么都用matlab。 上官网搜了下, 没能找到
目前仅这个最接近, 但连接失效
http://www.mathworks.com/matlabcentral/newsreader/view_thread/137161 本帖最后由 impulse 于 2012-4-24 09:16 编辑
回复 4 # ChaChing 的帖子
找到原因了,对Vs2005的C++选项进行优化设置后,执行效率与matlab相当,呵呵,硬是提高了3倍多。 您好,请问你的matlab filter的C代码可以发给我一份吗,我参考下。万分感谢哪! 回复 6 # 风儿飞127 的帖子
邮箱发我。 matlab filter的C代码我也要一份,还可以吗?
weighlin15089970590@hotmail.com 你好,请问可以给我发一份程序吗?谢谢,我的邮箱是xiexue196@126.com impulse 发表于 2012-4-24 09:16 static/image/common/back.gif
回复 4 # ChaChing 的帖子
找到原因了,对Vs2005的C++选项进行优化设置后,执行效率与matlab相当,呵呵, ...
您好,恳请发份给我,谢谢
iam973@126.com 回复 7 # impulse 的帖子
您好,能发给我一份filter的C++代码吗?万分感谢!ab198909112513@163.com 你好,能发给我一份filter的C代码吗?
邮箱ilsiling@126.com
谢谢~~ 代码贴出来吧,免得天天有人要
/*函数使用说明:
1、zi既是输入参数(initial conditions),又是输出参数(final conditions),因此,zi需要赋值,首次调用赋0;
2、对于len_a=1的情况,函数内部补充数组a的个数与b相同;
3、函数与matlab的filter函数区别在于zi的个数不同,本函数为len_b,matlab则为len_b-1
*/
void filter(double *x, int len_x, double *coeff_b, int len_b, double *coeff_a, int len_a, double* zi, int len_zi,
double* &filter_x, int& len_filter_x)
{
double t0=GetTickCount();
len_filter_x=len_x;
filter_x=new double;
if(len_a==1)
{
for(int m=0; m<len_x; m++)
{
filter_x=coeff_b*x+zi;
for(int i=1; i<len_b; i++)
{
zi=coeff_b*x+zi;//-coeff_a*filter_x;
}
}
}
else
{
for(int m=0; m<len_x; m++)
{
filter_x=coeff_b*x+zi;
for(int i=1; i<len_b; i++)
{
zi=coeff_b*x+zi-coeff_a*filter_x;
}
}
}
double t1=GetTickCount();
printf("filtertime- dt= %f ms\n",(t1-t0));
}
本帖最后由 jtll521 于 2012-11-7 01:40 编辑
impulse 发表于 2012-9-18 11:56 static/image/common/back.gif
代码贴出来吧,免得天天有人要
/*函数使用说明:
1、zi既是输入参数(initial conditions),又是输出参数 ...
你好,我最近也在写滤波的东西,自己也写了一个filter 的功能,但是每次验证的时候感觉和matlab里面的值不对应。(我将matlab生成的参数导入到c里面,然后用filter测试,出来的结果前几个和matlab里面是完全一样的,但是到后面就不对了)现在用你的这个代码出来的结果和我的一样的,和matlab里面不一样。不知道楼主有没有测试过,知道是什么原因吗?另外,我最近在写声音滤波的c,能交流一下吗?
谢谢,希望能回复一下
jtll521 发表于 2012-11-7 01:39 static/image/common/back.gif
你好,我最近也在写滤波的东西,自己也写了一个filter 的功能,但是每次验证的时候感觉和matlab里面的值不 ...
我的经过检验没问题,把你的代码贴出来,后面的不对,我估计是你的初始值赋值有问题,另外注意这个函数与matlab的区别。
页:
[1]
2