Download MATLAB script for least-square trigonometric approximation

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Sound reinforcement system wikipedia , lookup

Transcript
LAB 9: HUMAN HEARING AND LEAST-SQUARE TRIGONOMETRIC APPROXIMATION
Mathematics:
A human's ear recognizes sound waves, which are variations in time of the air pressure. Sound waves enter the
ear with different frequencies and the ear activates signals along neural pathways to the brain with the same
frequencies. The signals are interpreted as sound. However, the human's ear recognizes the sound waves having
frequencies within a certain range, which is roughly from 20 to 20,000 cycles per second. Therefore, the ear
only approximates the incoming sound waves by truncating signals having frequencies outside this range. This
project exploits the trigonometric approximation for the model of human hearing.
Let a sound wave p(t) have a saw-tooth pattern with a basic frequency of 2000 cycles per second. Such wave is
periodic in time with period T = 1/2000 = 0.0005 second. The function p(t) can be expressed analytically:
p(t) =
2 T

T 2

t 

and graphically:
The ear recognizes only sinusoidal variations of the air pressure that are trigonometric functions of time:
q(t) =
1
a0 +
2
m 1

j 1
 2 jt 
 2 jt 
 2mt 
 + bj sin 
 + am cos 

 T 
 T 
 T 
aj cos 
where (aj,bj) are amplitudes of the sinusoidal components of a complex sound wave, while frequencies of the
sinusoidal components j/T are truncated at the integer m such that m/T  20,000. The function q(t) is also
periodic with period T.
The sound wave p(t) with period T is not a finite sum of sinusoidal components, while q(t) is. Therefore, the
sound wave p(t) produces the ear's response q(t) which is only the approximation of the sound wave, obtained
by truncating the frequencies higher than m./T. The same response is produced if the sound wave would be q(t).
Amplitudes (aj,bj) of the function q(t) can be found from the least-square trigonometric approximation:
2
aj =
T
T

0
 2 jt 
p(t) cos 
 dt, j = 0,1,2,…,m;
 T 
2
bj =
T
 2 jt 
 dt, j = 1,2,…,m-1
 T 
T

p(t) sin 
0
The least-square trigonometric approximation minimizes the mean square error:
E=
T

0
[p(t) – q(t)]2 dt
In the example of p(t) given, one can find analytically that aj = 0; bj =
2
.
j
Objectives:
 Understand a computational algorithm for the least-square trigonometric approximation
 Exploit the trigonometric approximation for different values of m
 Understand the Gibbs phenomenon occurring at jump discontinuities of the trigonometric sums
MATLAB script for least-square trigonometric approximation
Let the interval t  [0,T] be equally spaced partitioned into (n+1) grid points:
ti =
(i  1)T
,
n
i=1,2,…,n,n+1
Let n = 2m. The trigonometric approximant q(t) has 2m coefficients [aj,bj], which are to be found from
equations: p(ti) = q(ti). When the function p(t) is continuous at the ends of the interval [0,T], coefficients [aj,bj]
can be computed from direct summation formulas:
aj =
2
n
n

i 1
 2 jti 
 , j = 0,1,2,…,m;
 T 
p(ti) cos 
bj =
2
n
n

 2 jti 
 , j = 1,2,…,m-1
 T 
p(ti) sin 
i 1
When the function p(t) has a jump at the ends of the interval [0,T], coefficients [aj,bj] can be computed from:
2
aj =
n
n

i2
2
 2 jti  1
p(ti) cos 
 + [p(0) + p(L)], j = 0,1,…,m; bj =
n
 T  n
n

i2
 2 jti 
 , j = 1,…,m-1
 T 
p(ti) sin 
Steps in writing the MATLAB script:
1. Define T = 0.0005, m = 20000 T, and n = 2m.
2. Assign an equally spaced partition of [0,T] to a row-vector t with (n+1) grid points.
3. Compute a row-vector p from the function p(t) at (n+1) grid points.
4. Compute coefficients (aj,bj) of the trigonometric approximant q(t).
5. Plot the trigonometric approximant q(t) for a tense partition tint of the interval between 0 < t < T.
6. Plot the sound wave function p(t) at the same graph.
Exploiting the MATLAB script:
1. Check a local error of the trigonometric approximation e(t) = |p(t) – q(t)| for values of t close to the
end-points t = 0 and t = T.
2. Check a local error e(t) = |p(t) – q(t)| for values of t close to the mid-point t = T/2?
MATLAB script for errors of least squares trigonometric approximations
The least squares trigonometric approximation becomes better as the number of terms in the approximating
trigonometric polynomial q(t) becomes larger. The mean square error E can be computed from a trapezoidal
rule for numerical integration:
E=
h n

2 i 1
( p
i

 qi ) 2  ( pi 1  qi 1 ) 2 ,
where h is a step size for a tense grid between [0,T]. Theoretically, the mean square error E tends to zero as the
number m approaches infinity. However, because E is found approximately from the trapezoidal rule, the mean
square error E approaches to a small constant which is the error of the numerical integration:
However, the trigonometric approximant q(t) with infinitely many terms (the Fourier series) may not converge
to the original function p(t) at any value of t in [0,T]. If the function p(t) has a jump discontinuity at a value t =
t0, then the trigonometric approximant q(t) converges to an average value of p(t) at the jump point. For
example, the sound wave p(t) in our example has a jump discontinuity at t = 0 and the trigonometric
approximant q(t) converges to 0.5( p(0+) + p(0-) ) = 0.5 (1 – 1) = 0 at the point t = 0. At other points of t in
[0,T], the trigonometric approximant q(t) converges to the values of p(t), but the local error of the trigonometric
approximation e(t) is not uniformly small for all values of t, if the function p(t) has a jump discontinuity. The
local error e(t) for sufficiently large value m = 100 is shown here:
Steps in writing the MATLAB script:
1. Define T as previously. Define a loop for values of m from 1 to 100.
2. Let n = 2 m and assign an equally spaced partition of [0,T] to a row-vector t. with (n+1) grid points.
3. Compute a row-vector p from the function p(t) at (n+1) grid points.
4. Compute coefficients (aj,bj) of the trigonometric approximant q(t).
5. Compute the mean square error E for each value of m. Save E as a vector.
6. After the loop in m is terminated, plot the vector E versus m in semilogy scale.
7. For m = 100, plot the local error of the trigonometric approximation e(t) = |p(t) – q(t)| for a tense
partition tint of the interval between 0 < t < T.
Exploiting the MATLAB script:
1. Plot the local error e(t) = |p(t) – q(t)| for m = 10, 50, 150, 200.
QUIZ:
1. Compute the trigonometric approximant q(t) of the function p(t) on t  [0,2  ] for m = 10:
p(t) =
3 4 sin t
5  4 cos t
2. Compute the trigonometric approximant q(t) of the function p(t) on t  [0,2  ] for m = 10:
p(t) = ecos t [ cos(sin t) + sin(sin t)]