HW 13b: Difference between revisions
Jump to navigation
Jump to search
(2 intermediate revisions by the same user not shown) | |||
Line 25: | Line 25: | ||
===Adaptive Filter=== |
===Adaptive Filter=== |
||
% LMS algorithm for adaptive noise cancellation |
|||
h = zeros(N,1); |
|||
mu = 1/(10*N*var(n)); |
|||
%mu = 1.0; |
|||
for k=N:Ls |
|||
⚫ | |||
nhat(k) = h'*xk'; |
|||
⚫ | |||
h = h - mu*e(k)*xk'; |
|||
%/(xk'*xk); % For the previous line. |
|||
⚫ | |||
Ls = length(Noise2); % Noise & SignalNoise is an Ls by 1 matrix. |
|||
N = 20; % Length of adaptive filter |
|||
h = zeros(N,1); % Adaptive filter coefficients |
|||
mu = 1/(1000*N*var(Noise2)); % Need to change |
|||
for k=N:Ls % Offset by the length of the adaptive filter to "start up" |
|||
⚫ | |||
nhat(k) = (h')*(xk'); % Multiply integrate |
|||
⚫ | |||
h = h - mu*e(k)*xk'/(xk*xk'); % Dividing by D^2 makes it independant of mu |
|||
⚫ | |||
====Questions==== |
====Questions==== |
||
*Is h the adaptive filter coefficients? Yes! |
*Is h the adaptive filter coefficients? Yes! |
||
*When you save the voice, is it an Nx1 or 1xN matrix? |
*When you save the voice, is it an Nx1 or 1xN matrix? |
||
* |
*whos (octave) will show all variables and their dimensions |
||
===Possibly promising links=== |
===Possibly promising links=== |
Latest revision as of 16:02, 17 December 2008
Installing Ubuntu
- VMWare Player
- Pre-compiled Ubuntu 8.10
- U:vmplanet
- P:vmplanet.net
GNU Radio + GNU Radio Companion
- GNU Radio Companion is installed with GNU Radio 3.2 and above. Install from the trunk. Synaptic Package Manager will only install 3.0.4
- GNU Radio Companion is the GUI for GNU Radio
Installing GNU Radio + GNU Radio Companion
- Grab the following files from mu/shared/class/engr/455/Adaptive Filter SDR Project/
- grc.tar.gz
- http://gnuradio.org/trac/wiki/UbuntuInstall
SSB Demodulation
- Convert the *.auf files (and not the *.au files) using Audacity, note the sampling rate
- Wave source allows you to play the converted *.wav files
- Bandpass filter to single out the 3kHz (and get rid of the 1/f noise at the same time)
- Shift down to baseband with a cosine wave
- Low pass filter to single out the signal at the baseband (and to throw out the signal at +/- 2f)
- Use your favorite sink to hear/see the results
Octave Help
Adaptive Filter
Ls = length(Noise2); % Noise & SignalNoise is an Ls by 1 matrix. N = 20; % Length of adaptive filter h = zeros(N,1); % Adaptive filter coefficients mu = 1/(1000*N*var(Noise2)); % Need to change for k=N:Ls % Offset by the length of the adaptive filter to "start up" xk = Noise2(k:-1:(k-N+1)); % Flip shift nhat(k) = (h')*(xk'); % Multiply integrate e(k) = - SignalNoise(k) + nhat(k); % Error term h = h - mu*e(k)*xk'/(xk*xk'); % Dividing by D^2 makes it independant of mu end
Questions
- Is h the adaptive filter coefficients? Yes!
- When you save the voice, is it an Nx1 or 1xN matrix?
- whos (octave) will show all variables and their dimensions