function [y, e] = delete_noise(data2); %clear; %close all %data3 = sin(0.01:0.01:50) + randn(1,5000); data3 = data2; %fprintf('######### Hit any key to record...\n\n' ); %pause; %data2 = wavrecord(25000,12500)'*100; %data3 = data2; %record = ti_01M1S1T0; %energyX = record *record'; [a b] = size(data2); if (a==1 & b>1), data2=data2'; data3 = data3';end N = 200; M = 6; %whiteNoise = randn(length(record),1)/100; %energyNoise = whiteNoise' *whiteNoise; %noiseAmp = sqrt(energyX / energyNoise * 10^ (-3/10)); %whiteNoise = whiteNoise * noiseAmp; %recorded = record' + whiteNoise; %recorded = randn(length(record),1)/100*noiseAmp; for n = 1 : floor(length(data2)/(N-M+1)) x = data2( (n-1)*(N-M+1) + 1 : n*N -(n-1)*(M-1) ); %d = data3((n-1) * N +1-(n-1) * M + 1 : n*N-(n-1) * M + 1); d = data3( (n-1)*(N-M+1) + 1 + 10 : n*N -(n-1)*(M-1) + 10); for m = 0 : M-1 %r(m+1) = whiteNoise((n-1)*N+1 : n*N-m)' * whiteNoise((n-1)*N+1+m : n*N); r(m+1) = x(1 : N-m)' * x(m+1 : N);% / (N - m); p(m+1) = x(1 : N-m)' * d(m+1 : N);% / (N - m); end %p = flipud(p); %p = r(2:M+1); R = toeplitz(r(1:M)); w = inv(R) * p'; for k = (n-1)*(N-M+1) + M : n*N -(n-1)*(M-1) %e(k) = recorded(k) - w' * whiteNoise(k-M+1 : k); y(k) = w' * data2(k-M+1 : k); %e(k) = recorded(k) - y(k); e(k) = data3(k) - y(k); end end if (a==1 & b>=1) y=y'; e=e'; end