Home > functions > device > filter_func > vb_online_butter_init.m

vb_online_butter_init

PURPOSE ^

Generate Butterworth bandpass filter matrix for Online calculation

SYNOPSIS ^

function [A, B, C, D, Z] = vb_online_butter_init(freq,fsamp,Norder,Nch,type)

DESCRIPTION ^

 Generate Butterworth bandpass filter matrix for Online calculation
 [A, B, C, D, Z] = vb_online_butter_init(freq,fsamp,Norder,Nch,type)
 type   : filter type : 'low', 'high' , 'band'
 freq   = cutoff freqency for type = 'low', 'high'
          [flow  fhigh] : bandpass freqency for type = 'band'
 fsamp  = sampling freqency
 Norder = filter order
 Nch  : Dimension of input signal
 Z    : Internal state variable (Nch x Norder)

    [A, B, C, D] = butter(Norder, freq/(fsamp/2));
    A = A'; B = B'; C = C'; D = D';
    A: Norder x Norder, 
    B: 1 x Norder, 
    C: Norder x 1, 
    D: 1 x 1
    Y = Z * C + U * D; % Output update
    Z = Z * A + U * B; % Internal state variable update

 Masa-aki Sato

 Copyright (C) 2011, ATR All Rights Reserved.
 License : New BSD License(see VBMEG_LICENSE.txt)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function    [A, B, C, D, Z] = vb_online_butter_init(freq,fsamp,Norder,Nch,type)
0002 % Generate Butterworth bandpass filter matrix for Online calculation
0003 % [A, B, C, D, Z] = vb_online_butter_init(freq,fsamp,Norder,Nch,type)
0004 % type   : filter type : 'low', 'high' , 'band'
0005 % freq   = cutoff freqency for type = 'low', 'high'
0006 %          [flow  fhigh] : bandpass freqency for type = 'band'
0007 % fsamp  = sampling freqency
0008 % Norder = filter order
0009 % Nch  : Dimension of input signal
0010 % Z    : Internal state variable (Nch x Norder)
0011 %
0012 %    [A, B, C, D] = butter(Norder, freq/(fsamp/2));
0013 %    A = A'; B = B'; C = C'; D = D';
0014 %    A: Norder x Norder,
0015 %    B: 1 x Norder,
0016 %    C: Norder x 1,
0017 %    D: 1 x 1
0018 %    Y = Z * C + U * D; % Output update
0019 %    Z = Z * A + U * B; % Internal state variable update
0020 %
0021 % Masa-aki Sato
0022 %
0023 % Copyright (C) 2011, ATR All Rights Reserved.
0024 % License : New BSD License(see VBMEG_LICENSE.txt)
0025 
0026 if nargin ~= 5, error('nargin must be 5'); end;
0027 
0028 switch    type
0029 case    'band'
0030     if length(freq) ~= 2, error('two freqency required for bandpass'); end;
0031     [A, B, C, D] = butter(Norder, freq/(fsamp/2));
0032 case    'low'
0033     if length(freq) ~= 1, error('one freqency required for lowpass'); end;
0034     [A, B, C, D] = butter(Norder, freq/(fsamp/2));
0035 case    'high'
0036     if length(freq) ~= 1, error('one freqency required for highpass'); end;
0037     [A, B, C, D] = butter(Norder, freq/(fsamp/2) ,'high');
0038 otherwise
0039     error('filter type is wrong');
0040 end
0041 
0042 A = A'; B = B'; C = C'; D = D';
0043 
0044 Norder = size(A,1);
0045 Z = zeros( Nch, Norder );
0046

Generated on Tue 27-Aug-2013 11:46:04 by m2html © 2005