Tuner Upper Removal Demonstration: Difference between revisions
Jump to navigation
Jump to search
Created page with ' % Demonstration of LMS algorithm for noise cancellation. % Rich Kozick, Spring 1997 % Rob Frohne's modifications for Macintosh 2000. % Desired signal clear all Totaltime…' |
No edit summary |
||
| (5 intermediate revisions by 3 users not shown) | |||
| Line 1: | Line 1: | ||
% Demonstration of LMS algorithm for noise cancellation. | <nowiki> | ||
% Demonstration of LMS algorithm for noise cancellation. Tuner upper problem. | |||
% Rich Kozick, Spring 1997 | |||
% Rob Frohne's modifications for Macintosh 2000 | |||
% and Linux 2006 or so. | |||
clear all | |||
Fs=8000; % 8 Khz sampling for Linux. | |||
T0 = 2; % 2 seconds | |||
system("espeak 'After hitting enter in the command window, speak the signal.'"); | |||
st = record(T0,Fs); | |||
%st=wavread('Hello.wav'); | |||
st=st(:,1); | |||
% | system("espeak 'Here is the signal.'") | ||
soundsc(st); | |||
Ls = length(st); | |||
T0=length(st)/Fs; | |||
% Make the tuner upper noise or even several at the same time. | |||
t=0:1/Fs:T0-1/Fs; | |||
n = 10*(sin(2*pi*100*pi*t) + cos(2*pi*600*t) + 1.5*sin(2*pi*850*t)); | |||
% Add him or them to the desired signal. | |||
x = st' + n; | |||
system("espeak 'Here is the noisy signal.'") | |||
soundsc(x,Fs); | |||
N = 64; % Length of adaptive filter | |||
x = | |||
% LMS algorithm for adaptive noise cancellation | |||
soundsc( | h = ones(N,1); | ||
N = | mu = 0.1; | ||
% LMS algorithm for adaptive noise cancellation | for k=N:Ls | ||
h = | xk = x(k:-1:(k-N+1)); | ||
mu = 1 | y(k) = h'*xk'; | ||
e(k) = y(k); | |||
for k=N:Ls | h = h - 2*mu*e(k)*xk'/(xk*xk'); | ||
end | end | ||
% The signal estimate is in the vector e | % The signal estimate is in the vector e | ||
system("espeak 'Here is a scaled version of the tail of the cleaned signal.'"); | |||
soundsc(e,Fs); | skip =1000; | ||
soundsc(e(skip:length(e)),Fs); | |||
</nowiki> | |||
Latest revision as of 13:43, 6 December 2015
% Demonstration of LMS algorithm for noise cancellation. Tuner upper problem.
% Rich Kozick, Spring 1997
% Rob Frohne's modifications for Macintosh 2000
% and Linux 2006 or so.
clear all
Fs=8000; % 8 Khz sampling for Linux.
T0 = 2; % 2 seconds
system("espeak 'After hitting enter in the command window, speak the signal.'");
st = record(T0,Fs);
%st=wavread('Hello.wav');
st=st(:,1);
system("espeak 'Here is the signal.'")
soundsc(st);
Ls = length(st);
T0=length(st)/Fs;
% Make the tuner upper noise or even several at the same time.
t=0:1/Fs:T0-1/Fs;
n = 10*(sin(2*pi*100*pi*t) + cos(2*pi*600*t) + 1.5*sin(2*pi*850*t));
% Add him or them to the desired signal.
x = st' + n;
system("espeak 'Here is the noisy signal.'")
soundsc(x,Fs);
N = 64; % Length of adaptive filter
% LMS algorithm for adaptive noise cancellation
h = ones(N,1);
mu = 0.1;
for k=N:Ls
xk = x(k:-1:(k-N+1));
y(k) = h'*xk';
e(k) = y(k);
h = h - 2*mu*e(k)*xk'/(xk*xk');
end
% The signal estimate is in the vector e
system("espeak 'Here is a scaled version of the tail of the cleaned signal.'");
skip =1000;
soundsc(e(skip:length(e)),Fs);