"butter" filter: Undefined function
15 次查看(过去 30 天)
显示 更早的评论
Hi everyone,
I'm having some problems in creating a lowpass butter filter. I am using the function below:
fc = forceplatesInfo.frequency; % forceplates
[b,a] = butter(4,15/(fc/2),'low');
Where:
- fc is the frequency of the force plates (in this case it is 2000Hz)
It is a simple code but I keep getting this error: "Undefined function 'butter' for input arguments of type 'double'".
I used the matlab tutorial and i still can't figure this out.
Any ideas? Thanks Emanuele
0 个评论
采纳的回答
Jan
2017-5-5
编辑:Jan
2017-5-8
The error message means, that you do not have the Signal Processing Toolbox, which is required for the butter command. But you can calculate the parameters for a lowpass Butterworth filter by your own:
function [B, A] = ButterLow(n, W)
V = tan(W * 1.5707963267948966);
Q = exp((1.5707963267948966i / n) * ((2 + n - 1):2:(3 * n - 1)));
Sp = V * Q;
% Bilinear transform:
P = (1 + Sp) ./ (1 - Sp);
Z = repmat(-1, size(P));
G = real(V ^ length(Q) / prod(1 - Sp));
% From Zeros, Poles and Gain to B (numerator) and A (denominator):
B = G * real(poly(Z'));
A = real(poly(P));
更多回答(1 个)
Honglei Chen
2017-5-5
Do you have Signal Processing Toolbox installed? You can find out by typing
>> ver
in the command window.
HTH
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Analog Filters 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!