MATLAB Answers


How can I seperate a superposition of sine and random waves?

Alexi B. 님이 질문을 제출함. 6 Feb 2015
최근 활동 Youssef Khmou 님이 편집함. 8 Feb 2015
Hi, I'm into modal analysis. We want to vibrate a body using a combination of sine and random signals. Then we measure the response on a body using accelerometer. The measurement is 1 signal, the need is to separate the signal into two signals (sine and random) and see how close is the measurement to the original signals we used to vibrate the body, thus learning about the nature of interference, accuracy of accelerometers and so on. Does anyone knows how to do it? (not FFT)
Thanks in advance!

  댓글 수: 0

로그인 to comment.

답변 수: 2

Youssef Khmou 님의 답변 6 Feb 2015
 채택된 답변

Separation of two wave forms can be accomplished using Kalman filter or wiener filter, you can find resources of these two filters, next you use root mean square error between recovered and original sine waves.

  댓글 수: 4

표시 이전 댓글 수: 1
Hello, I've looked into those filters. I downloaded the Kalman filter script you've wrote (it's signed) and used the examples there to somehow get close to what I need. Specifically, I managed to clean the sinus signal, but still need to get the random part as well. How would you go about it? I'm attaching the photos of the examples you used, with the changes I've made;
Y1 is the recovered wave form and and y is raw vector, the basic way is :
Compare statistically nn and noise.

로그인 to comment.

Image Analyst 님의 답변 7 Feb 2015

I guess I don't know why you need to separate anything. Why? Why not just calculate the RMS error, or PSNR, or similar things to tell how different your known input signal is from your output (measured) signal? I guess you might need to scale the amplitudes and make sure your time scales are also matched up, but that's about it I would think. If you don't want to do a spectral analysis with fft (for some unexplained reason), then you can use pwelch() (in the Signal Processing Toolbox).

  댓글 수: 2

Hmm... As I see it, we want to get the separate signals in order to see how they're different? I don't know, I'm not the lead engineer in the laboratory, I know the final goal is the run what is called operational modal analysis, that is, in the real test we won't know the original signals used on the body. So we want to study the response of all the system components and inaccuracies that will come from, measuring, analyzing, windowing, so on.
Regarding fft, perhaps I don't know the full abilities of the fft, but I played with it before posting a question here, all I was able to achieve is getting the sinus back (that is killing the random part). Perhaps you can specify what you meant?
If you take the fft, you get the spectrum, which is the relative strengths of all frequencies in the signal. I don't know how you played with the fft, but whatever you did, you must have told it to give you back just the one sine wave. I mean the code will do exactly what you tell it to. The fft will give you all frequencies of sine waves back, but then you must have done the extra steps of zeroing out all the ones you don't want and then inverse transforming. That's the only way you could get just one frequency out instead of all of them.
Let me try to explain it a different way. An fft is a bunch of sine waves of all frequencies that, when summed, can replicate the original signal, similar to how you can replicate any signal with polynomials in a Taylor series. You say you're just getting one frequency out...look at it like this. You know a Taylor series, and you know that if you get a Taylor series for a sine wave, you get a1*x + x3*x^3 + a5*x^5 + a7*x^7 + ... Now if I told you that I did the Taylor series and got back just a line (the a1*x term), instead of all the terms, the only way that could happen is if I manually deleted all the terms a5, a7, a9, etc.

로그인 to comment.

Translated by