"butter" filter: Undefined function
15 views (last 30 days)
Show older comments
Emanuele Giartosio
on 5 May 2017
Commented: Emanuele Giartosio
on 9 May 2017
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 Comments
Accepted Answer
Jan
on 5 May 2017
Edited: Jan
on 8 May 2017
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));
More Answers (1)
Honglei Chen
on 5 May 2017
Do you have Signal Processing Toolbox installed? You can find out by typing
>> ver
in the command window.
HTH
See Also
Categories
Find more on Analog Filters in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!