How to find the signal to noise ratio of any signal when the input is a random signal from the machinery. Without using any thresholding or the mean and sd to calculate the SNR as Matlab does.
I do this with medical images all the time where I don't know the underlying signal
I apply a spline fit to the data to estimate signal - see the "fit" function in matlab.
By dividing the signal by the signal estimate, you can compute a normalized signal estimate to compute the mean over mean(signal./signal_estimate)
by subtracting the signal estimate from the signal you compute an estimate of the noise so you can compute the noise standard deviation by. std(signal - signal_estimate)
Thank you for the answer, but, still I am having doubt with the spline, as the decimated signal can be interpolated using splines to bring back to the same dimension as that of the actual signal.
Could use splines (piece-wise). That makes sense when batch processing. I also like to use low-order polynomials. But I fit them locally using an exponentially decaying weight, which is ideal for on-line recursive processing. The residual of the fit may be computed (recursively) to estimate the variance, or the SNR. See the link for math details and block diagrams.
Research Generalized IIR Savitzky-Golay Filters: Derivation, Paramete...
If your signal S(t) is random and your noise n(t) is random, then what distinguishes signal from the noise. Basically one must differentiate them to separate them Or at least one of them can be estimated and the other is obtained from the composite signal. The signals can be separated by means of correlation. Also if they are different in frequency they can be spa rated by filtering of by FFT.
If you can not distinguish your signal from your noise through their profile in time domain you may differentiate them in frequencies domain by FFT.
Thank you Abdelhalim ji for the kind reply. The applicability of FFT can only be satisfied for the stationary signal with predefined threshold, but when the signal is buried in noise what to do. If my signal is nonstationary whether the case will be applicable or I must follow EMD or wavelet to decompose the data and find SNR.
The method I mentioned will only work if your signal is confined to the near-dc region of the spectrum. Only then will local low-order polynomials be a reasonable approximation.
Dear Sir, my signal is not near dc region, it is the vibration signal from the bearings and spreads from a lower frequency (20Hz) to high-frequency band up to kHz.
OK. So you may be better off using sinusoids to represent your signal as suggested by AZ. You can use localized windows, with tapers, to get around the problem of non stationarity.
If you pay attention to my advice. I would use vibration transducers which have low intrinsic noise such as piezoelectric transducers. As they are capacitive they will have low noise. Also they must be of high sensitivity. And the signal needs amplification you use instrumentation amplifiers with very low noise. There exists such an amplifier that are used even to measure a very weak signal in the bio medical electronics.
I think also that vibrations pf the machines are not completely random as you assume. There will be some dominant mode of vibration according to the the resonance frequency of the mechanical parts.
As i said before the signals must be distinguishable to separate them.
As an example of the such signals are the sound signals. In the short term frequency domain they contains the so called formants.
The issue is not as you said when you have a machine producing vibrations and when you do not change operating conditions its issued signal will be stationary.
I would make ling term FFT and short FFT on windowed signals and see the results.
You refuse the solutions proposed by the friends without trying to apply them.
For short trem Fourier transform please see the Link : http://iitg.vlab.co.in/?sub=59&brch=164&sim=908&cnt=1
The stationarity problem is worked around using the fitting operation to estimate the nonstationarity. That is what the unfiltered signal divided by its spline fit provides you - a normalize stationary signal with noise on top. let me know if you are still confused. Although it sounds like your original question does not quite apply in your case as your signal of interest is in the 20Hz to kHz bands. Do you have apriori knowledge of what frequency your vibration(s) will be at? How far apart do you expect the first and second modes?
By 'near-dc' I mean that polynomials will be OK when processing a signal that is approximately polynomial over the analysis time-frame, as is the case when a slow process is sampled at a high rate.
If you go down the DFT route, and you want to do online processing, you could also look at the attached paper
Erick ji, yes I know the fault frequencies and their harmonics (The spectrum will show the rotaing frequency of the shaft (29.95, 2*29.95,3*29.95 and so on with different value of amplitudes) and the corresponding harmonics and fault frequency of the defects (162.177,2*162.77 and so on) and its harmonics) al, but it so happen when the fault is less the fault signal is burried inside the noise and it is very difficult to identify and some times it can be identified using Envelope analysis or cepstrum analysis that time the cases are ture to investigate the SNR. At lower fault, the shaft rotating frequency is quite higher than the fault signals.
Dear Abdelhalim Ji, thank you for the response. Yes, sir, it is true there will be dominant mode (the center frequency modulated by the fault frequency). The signal is not truly random but they may be chaos or stochastic in nature as the noise is concerned. I have tried the signal using FFT and STFT. I even carried out the signal decomposition method using EMD and applied the FFT and envelope detection method in finding out the signature from the resonance frequency.
Sounds like some band pass filtering might be useful for you at the shaft and fault fundamental and harmonics. If you looked at a plot of the 162Hz band versus time you are saying you see some noise signal and occasionally your fault signal?
After the information supplied by you and the advancement achieved, i would like that you filter the signal with a high pass filter say with cut off frequency of about the fifth harmonics of the shaft frequency. This may be a fir filter with large stop band attenuation. In this way you have the signal with the fault frequency. The signal remaining is that containing the fault frequencies. Sample this signal at a large integer value of the fundamental frequency of the fault. That is 162.1777HZ , say at 100 times this frequency. It is very important to sample the at 16217.77Hz as this will make the fourier components laying at an integral subfrequency of the sampling frequency.
Also you can use correlates to separate your fault frequency signal. You simply multiply your signal with a sine wave at the intended frequency comportment and average the output signal at a one period of the selected sine wave. You may increase the integration time to multiple cycle.