image thumbnail
from Mutliple Feedback Filter Equalizer Generator by Sean Hatch
Generates a group of multiple feedback filters based on a few equalizer parameters.

calc_parameters.m

calc_parameters.m

Contents

This function takes the user input and makes it a bit more usable for the rest of the functions. Given the lowest center frequency, highest center frequency, a filter scalar or vector, a band pass gain scalar or vector, and the number of filters in the equalizer, return a vector of angular frequencies, qualities, band pass gains, and a scalar representing the number of filters.

function [w0,q0,hbp,n] = calc_parameters(f01,f02,q0,hbp,n)

Center frequency selection

We would like to have the center frequencies of the fitlers evenly spaced (logarithmically) in frequency. The follwoing code accomplishes this.

    %for the specificed frequency range, choose the
    %cetner frequencies of the filters.
    low_freq = log10(2*pi*f01);
    high_freq = log10(2*pi*f02);
    w0 = logspace(low_freq,high_freq,n);

Quality and band pass gain vector creation

The user can enter either a scalar or a vector for the quality of each filter. If a scalar is entered, the scalar will be copied to a vector of length n, where n reprensents the number of fitlers in the equalizer

    %if the user supplied a single value, extend the vector
    %to n. each entry will be the specified value.
    if (length(q0) < n)
        for filter_n = 1:n
            q0(filter_n) = q0(1);
        end
    end

    %same idea here
    if (length(hbp) < n)
        for filter_n = 1:n
            hbp(filter_n) = hbp(1);
        end
    end

    %haha
    n = n;

end

Contact us at files@mathworks.com