Thread Subject: Separated the noise

Subject: Separated the noise

From: Muhammad

Date: 26 Dec, 2008 04:13:02

Message: 1 of 6

dear who considering


i write my simple code under my simple information of matlab function
and post the code in order to benefit other beginner
thanks
I have a problem and I hope any help for me

how to separated the original signal from its noise.

I have a wave(.wav)
I blend it with noise.
my listing program :
y=wavread(open.wav);
spect=abs(fft(y,1024));
frek= linspace(0,22050,512)
plot(frek,spect(1:512));
% generate and mix the noise.
open_noise=agwn(y,20);

Thank you.

Subject: Separated the noise

From: ImageAnalyst

Date: 26 Dec, 2008 04:42:47

Message: 2 of 6

On Dec 25, 11:13=A0pm, "Muhammad " <fahrudin_fis...@yahoo.com> wrote:
> dear who considering
>
> i write my simple code under my simple information of matlab function
> and post the code in order to benefit other beginner
> thanks
> I have a problem and I hope any help for me
>
> how to separated the original signal from its noise.
>
> I have a =A0wave(.wav)
> I blend it with noise.
> my listing program :
> y=3Dwavread(open.wav);
> spect=3Dabs(fft(y,1024));
> frek=3D linspace(0,22050,512)
> plot(frek,spect(1:512));
> % generate and mix the noise.
> open_noise=3Dagwn(y,20);
>
> Thank you.

-----------------------------------------------
Muhammed:
I don't know the function agwn(). What is it?
You could add the noise to your signal (y) and then use a Wiener
filter (in the image processing toolkit) to recover an estimate of
your signal. Or you could try a median filter. There are lots of
ways to reduce noise and try to recover your signal. Each makes some
kind of assumption about the type of signal and noise, like the
spectrum or way the noise affects your signal (additive,
multiplicative, Gaussian, salt and pepper, 1/f, whether the noise
comes in before the point spread function takes effect or after,
etc.) For example, if you have additive Gaussian noise, and a signal
presumed to be made up from a known function (e.g. a polymonial of
some order), then you can try a least squares fit.
Good luck,
ImageAnalyst

Subject: Separated the noise

From: Nasser Abbasi

Date: 26 Dec, 2008 05:12:35

Message: 3 of 6


"Muhammad " <fahrudin_fistek@yahoo.com> wrote in message
news:gj1lke$nlp$1@fred.mathworks.com...
> dear who considering
>
>
> i write my simple code under my simple information of matlab function
> and post the code in order to benefit other beginner
> thanks
> I have a problem and I hope any help for me
>
> how to separated the original signal from its noise.
>
> I have a wave(.wav)
> I blend it with noise.
> my listing program :
> y=wavread(open.wav);
> spect=abs(fft(y,1024));
> frek= linspace(0,22050,512)
> plot(frek,spect(1:512));
> % generate and mix the noise.
> open_noise=agwn(y,20);
>
> Thank you.
>

That is probably going to be a very hard to thing to do I would think. To
separate WGN from the signal, that is.

White Gaussian noise has a constant power spectrum which extends over all
frequencies, hence direct filtering would not work.

In addition, if you were able to remove WGN from the signal somehow, this
means you have solved THE communication problem itself, and the Shannon
channel limit do not exist since noise is no longer an issue in
communication as one can extract the original signal.

May be you can, using statistics, and assuming you know the spectrum of the
original signal and may be other assumptions,use Wiener filter to reduce
WGN. But again, I do not think it is possible to eliminate WGN from a signal
completely and in general under all conditions.

I could be wrong ofcourse.

--Nasser

Subject: Separated the noise

From: Greg Heath

Date: 26 Dec, 2008 22:26:17

Message: 4 of 6

On Dec 25, 11:42=A0pm, ImageAnalyst <imageanal...@mailinator.com> wrote:
> On Dec 25, 11:13=A0pm, "Muhammad " <fahrudin_fis...@yahoo.com> wrote:
>
>
>
>
>
> > dear who considering
>
> > i write my simple code under my simple information of matlab function
> > and post the code in order to benefit other beginner
> > thanks
> > I have a problem and I hope any help for me
>
> > how to separated the original signal from its noise.
>
> > I have a =A0wave(.wav)
> > I blend it with noise.
> > my listing program :
> > y=3Dwavread(open.wav);
> > spect=3Dabs(fft(y,1024));
> > frek=3D linspace(0,22050,512)
> > plot(frek,spect(1:512));
> > % generate and mix the noise.
> > open_noise=3Dagwn(y,20);
>
> > Thank you.
>
> -----------------------------------------------
> Muhammed:
> I don't know the function agwn(). =A0What is it?

It's a misprint.

http://www.mathworks.com/access/helpdesk/help/toolbox/comm/ref/awgn.html

Hope this helps.

Greg

Subject: Separated the noise

From: Johan Carlson

Date: 28 Dec, 2008 15:39:02

Message: 5 of 6

Greg Heath <heath@alumni.brown.edu> wrote in message <5d595ffc-c720-4cf6-b41e-b031ad69e4a7@o40g2000yqb.googlegroups.com>...
> On Dec 25, 11:42=A0pm, ImageAnalyst <imageanal...@mailinator.com> wrote:
> > On Dec 25, 11:13=A0pm, "Muhammad " <fahrudin_fis...@yahoo.com> wrote:
> >
> >
> >
> >
> >
> > > dear who considering
> >
> > > i write my simple code under my simple information of matlab function
> > > and post the code in order to benefit other beginner
> > > thanks
> > > I have a problem and I hope any help for me
> >
> > > how to separated the original signal from its noise.
> >
> > > I have a =A0wave(.wav)
> > > I blend it with noise.
> > > my listing program :
> > > y=3Dwavread(open.wav);
> > > spect=3Dabs(fft(y,1024));
> > > frek=3D linspace(0,22050,512)
> > > plot(frek,spect(1:512));
> > > % generate and mix the noise.
> > > open_noise=3Dagwn(y,20);
> >
> > > Thank you.
> >
> > -----------------------------------------------
> > Muhammed:
> > I don't know the function agwn(). =A0What is it?
>
> It's a misprint.
>
> http://www.mathworks.com/access/helpdesk/help/toolbox/comm/ref/awgn.html
>
> Hope this helps.
>
> Greg

Well, in general you can't "separate" the signal and noise components completely. At best, you could exploit some statistical properties of your source signal (the wav file) to design some sort of filter.

Now, in your example, you actually have access to the noise-free signal (it's your x), so you could just subtract the signal from your "noise+signal" variable to obtain the current realization of the noise. Note, however, that this will ONLY work for that given realization of the noise vector. In general, AWGN can't really be predicted and removed completely, for reasons explained above.

/JC

Subject: Separated the noise

From: Greg Heath

Date: 1 Jan, 2009 18:15:45

Message: 6 of 6

On Dec 25 2008, 11:13=A0pm, "Muhammad " <fahrudin_fis...@yahoo.com>
wrote:
> dear who considering
>
> i write my simple code under my simple information of matlab function
> and post the code in order to benefit other beginner
> thanks
> I have a problem and I hope any help for me
>
> how to separated the original signal from its noise.
>
> I have a =A0wave(.wav)
> I blend it with noise.
> my listing program :
> y=3Dwavread(open.wav);
> spect=3Dabs(fft(y,1024));
> frek=3D linspace(0,22050,512)
> plot(frek,spect(1:512));
> % generate and mix the noise.
> open_noise=3Dagwn(y,20);
>
> Thank you.

The most common way to remove white noise is
to use a moving average or moving median filter whose length
is significantly smaller than the decorrelation time of the signal.

Hope this helps.

Greg

Tags for this Thread

Add a New Tag:

Separated by commas
Ex.: root locus, bode

What are tags?

A tag is like a keyword or category label associated with each thread. Tags make it easier for you to find threads of interest.

Anyone can tag a thread. Tags are public and visible to everyone.

rssFeed for this Thread

Contact us at files@mathworks.com