| Author |
Message |
m_eh_62
Joined: 05 Mar 2007 Posts: 51 Helped: 5
|
06 Jul 2007 8:07 Eliminate the noise |
|
|
|
|
HI friend
i use FFT function of Matlab to a non-stationary signal and get the below figure and i want now to elimnate the noise I think it is a white noise
i test the butterworth filter function but i can to eliminate this noise
can everyone help me?
thanks.
|
|
| Back to top |
|
 |
echo47
Joined: 07 Apr 2002 Posts: 4206 Helped: 566
|
06 Jul 2007 9:05 Eliminate the noise |
|
|
|
|
The low-amplitude fuzz near the bottom of the plot looks too uniform to be white noise. Maybe it's an interfering signal, or some sort of quantization effect.
If you can upload the time-domain data file, then maybe someone here can help you better.
If you upload to EDAboard, you should ZIP it or RAR it first.
|
|
| Back to top |
|
 |
m_eh_62
Joined: 05 Mar 2007 Posts: 51 Helped: 5
|
07 Jul 2007 9:27 Re: Eliminate the noise |
|
|
|
|
Yea
dear friends
here is time domain of my signal it is a non-stationary signal
How can i eliminte the noise?
|
|
| Back to top |
|
 |
ieropsaltic
Joined: 25 Sep 2006 Posts: 205 Helped: 44
|
07 Jul 2007 10:00 Re: Eliminate the noise |
|
|
|
|
| Perhaps it's not noise .It seems sinc-like .May it's due to the used window used on performing FFT .The default one is a rectangular window .MATLAB multiplies your time-domain signal with the window before performing FFT .Multiplying at time domain translates into convolution at frequency domain .Thus ,for rectangular window, your spectrum would appear as sincs convolved with the required frequency components .I'm not sure if this is the reason .
|
|
| Back to top |
|
 |
echo47
Joined: 07 Apr 2002 Posts: 4206 Helped: 566
|
07 Jul 2007 12:07 Eliminate the noise |
|
|
|
|
I see large discontinuities in your time domain waveform. They are probably causing the low-amplitude fuzz in the frequency domain. It's not noise, it's real information.
Can you upload numerical data instead of a JPEG plot of the data? Or show us the MATLAB code that generated the data?
Are you willing to modify your time-domain waveform to reduce the fuzz in the frequency domain? Maybe you could do phase-continuous frequency hops, or maybe you could apply amplitude envelopes to the four frequency bursts.
|
|
| Back to top |
|
 |
m_eh_62
Joined: 05 Mar 2007 Posts: 51 Helped: 5
|
07 Jul 2007 15:23 Re: Eliminate the noise |
|
|
|
|
| here is Time-domain of signal:
|
|
| Back to top |
|
 |
Google AdSense

|
07 Jul 2007 15:23 Ads |
|
|
|
|
|
|
| Back to top |
|
 |
m_eh_62
Joined: 05 Mar 2007 Posts: 51 Helped: 5
|
07 Jul 2007 20:39 Re: Eliminate the noise |
|
|
|
|
Dear ieropsaltic
you had said:
"MATLAB multiplies your time-domain signal with the window before performing FFT "
I don't use STFT algorithm,I've used FFT.
if i used STFT algorithm it multiolied the main signal to a windows function and then get FFT from the new signal
I should recall that I use FFT not STFT.
|
|
| Back to top |
|
 |
m_eh_62
Joined: 05 Mar 2007 Posts: 51 Helped: 5
|
08 Jul 2007 3:26 Re: Eliminate the noise |
|
|
|
|
Dear echo47
yea you are right it's real information but
suppose that I've a signal in frequency-domain like the first JPG figure and there are Noise in some portion of this signal and now i want to eliminate this noise.
exactly I want use a kind of filter to improve it.
|
|
| Back to top |
|
 |
echo47
Joined: 07 Apr 2002 Posts: 4206 Helped: 566
|
08 Jul 2007 4:21 Re: Eliminate the noise |
|
|
|
|
Try amplitude envelopes, such as Hamming weighting. The various weighting functions provide different trade-offs between attenuation of the unwanted frequencies and widening of the spectral peaks.
| Code: |
t = linspace(-5*pi,5*pi,1000);
x1 = cos(2*pi*5*t); x2 = cos(2*pi*10*t); x3 = cos(2*pi*20*t); x4 = cos(2*pi*50*t);
x1 = cos(2*t); x2 = cos(2*pi*t); x3 = cos(20*t); x4 = cos(50*t);
x = [x1(1:250) x2(251:501) x3(502:752) x4(753:1000)];
subplot(4,1,1); plot(x);
X = fftshift(fft(x));
subplot(4,1,2); plot(abs(X));
w = hamming(250)'; % weighting function
x = x .* [w w w w] / mean(w); % apply weighting to all four frequency bursts
subplot(4,1,3); plot(x,'color',[0 0.7 0]);
X = fftshift(fft(x));
subplot(4,1,4); plot(abs(X),'color',[0 0.7 0]); |
|
|
| Back to top |
|
 |