FourierSeries:
--------------------------------------------------------------------------
Generates the Fourier Series sine and cosine coefficients of a signal using
the matlab function FFT. Returns the coefficients for a user specified
number of harmonics with the largest magnitudes.
--------------------------------------------------------------------------
Form:
[x, w, h] = FourierSeries( y, t, n )
--------------------------------------------------------------------------
------
Inputs
------
y (k,:) The signal whose coefficients are to be found. if y
is a matrix each row contains a separate signal. k is
number of signals to be analyzed
t (1,:) Time
n (1,:) Number of harmonic terms to return
-------
Outputs
-------
x (2h+1,k) [constant;sine terms;cosine terms]
w (k,n) Frequncies of harmonics
h The number of sine/cosine terms returned. The length
of x will thus be 2*h+1
NOTE
----
The harmonics are found by finding the peaks in the magnitude, m, of
the transform. Using the function FindPeaks.
m = sqrt(a.^2 + b.^2)
a cosine coefficients
b sine coefficients
note: if the signal is very rough, peaks which are not true harmonics will be
found. The effects of this should be minimized since the peaks are sorted
by magnitude.
The number of sine/cosine terms returned varies according to the following:
- when n is not specified,
h = N/2 where N is the length of the signal
- when n < number of harmonics found
h = n
- when N/2 > n > number of harmonics found
h = number of harmonics found
- when multiple signals are being analyzed, the number of harmonics is
determined by the signal with the most peaks and the others signals
will simply return zeroes as place holders.
FOR EXAMPLE:
If y contains two signals of length 100, where signal1 is found to
have 4 harmonics and signal2 is found to have 8 harmonics h will be
as follows:
n <= 4, h = n
4 < n <= 8, h = n but in case of signal1 places > 4 will be zero
8 < n < 50, h = 8 but in case of signal1 places > 4 will be zero
n >=50, h = 50 full set of coefficients is returned
--------------------------------------------------------------------------
Children:
Common: Control/FindPeaks
Common: Graphics/Plot2D
Math: MathUtils/Odd