小编Cer*_*rdo的帖子

如何自己编写Matlab"过滤器"功能?

我想在1D信号上使用巴特沃斯滤波器.在Matlab中,脚本看起来像这样:

 f=100;
 f_cutoff = 20; 
 fnorm =f_cutoff/(f/2);
 [b,a] = butter(8,fnorm,'low');
 filteredData = filter(b,a,rawData); % I want to write this myself
Run Code Online (Sandbox Code Playgroud)

现在我不想直接使用Matlab中给出的filter -function,而是自己编写.在Matlab文档中,它描述如下:

滤波器功能实现为直接形式II转置结构,

y(n)= b(1)*x(n)+ b(2)*x(n-1)+ ... + b(nb + 1)*x(n-nb) - a(2)*y(n-1) - ... - a(na + 1)*y(n-na)

其中n-1是滤波器阶数,它处理FIR和IIR滤波器[1],na是反馈滤波器阶数,nb是前馈滤波器阶数.

所以我已经尝试过编写这样的函数:

f=100;
f_cutoff = 20; 
fnorm =f_cutoff/(f/2);
[b,a] = butter(8,fnorm,'low');
for n = 9:size(rawData,1)
    filteredData(n,1) = b(1)*n + b(2)*(n-1) + b(3)*(n-2) + b(4)*(n-3) + b(5)*(n-4) ...
                      - a(2)*rawData(n-1,1) - a(3)*rawData(n-2,1) - a(4)*rawData(n-3,1) - a(5)*accel(n-4,1);
end
Run Code Online (Sandbox Code Playgroud)

但那不起作用.你能帮我么?我究竟做错了什么?

真诚的,Cerdo

PS:过滤器文档可以在这里foud:http …

matlab filtering filter matlab-deployment

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

filter ×1

filtering ×1

matlab ×1

matlab-deployment ×1