"butter" filter: Undefined function

14 Ansichten (letzte 30 Tage)
Emanuele Giartosio
Emanuele Giartosio am 5 Mai 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

Akzeptierte Antwort

Jan
Jan am 5 Mai 2017
Bearbeitet: Jan am 8 Mai 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));
  1 Kommentar
Emanuele Giartosio
Emanuele Giartosio am 9 Mai 2017
Thanks! The Signal Processing Toolbox trial was expired 2 day ago and I didn't notice it.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Honglei Chen
Honglei Chen am 5 Mai 2017
Do you have Signal Processing Toolbox installed? You can find out by typing
>> ver
in the command window.
HTH
  1 Kommentar
Emanuele Giartosio
Emanuele Giartosio am 9 Mai 2017
Thanks! The Signal Processing Toolbox trial was expired 2 day ago and I didn't notice it.

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by