A composite signal is defined as

$$x(t) = \sin(2\pi 10t) + \sin(2\pi 40t) + \sin(2\pi 60t) + \sin(2\pi 50t)$$

Separate the four frequencies without using any of the transform techniques.

  • 1
    $\begingroup$ What would you call a "transform technique"? I assume the Fourier or Laplace transform would count as such, but what about cross correlation? $\endgroup$ – fibonatic Nov 21 '17 at 20:44
  • $\begingroup$ Yeahh Cross-Correlation should not count as one of the transform techniques I suppose $\endgroup$ – AMIT SHUKLA Nov 22 '17 at 16:07

You can achieve this result by using two combs filters : https://en.wikipedia.org/wiki/Comb_filter

Put simply, the comb filter consists of adding a delayed version of the signal to itself, causing destructive or constructive interference.

Simplest implementation of a feedforward comb filter

For instance, with $K = 20$ and a negative gain value after the delay line, you can significantly decrease or suppress harmonics that are even multiples of 20: $\sin(2\pi40t)$ and $\sin(2\pi60t)$, which leaves you with only $ y(t) = \sin(2\pi10t) + \sin(2\pi50t)$.

Apply the same method one more time with $K = 100$ and you will end up with $y(t)=\sin(2\pi10t)$, although scaled and delayed due to the filters. The same method works for each of the four harmonics.

It might not be the most straightforward way to achieve this result, but it only uses simple filter structures. Another approach could be to use notch filters to remove the unwanted harmonics from your signal.

  • $\begingroup$ Can you please suggest a matlab implementation of the above technique.Thanks in advance. $\endgroup$ – AMIT SHUKLA Nov 22 '17 at 16:20
  • $\begingroup$ You should be able to convert the above structure in Matlab code by yourself... $\endgroup$ – Ben Nov 22 '17 at 18:05
  • $\begingroup$ If your input signal is a array, say x, you can very simply use an embedded Matlab function to shift the array (I let you find by yourself which one to use, I think it is a good exercise) and then scale and add this array to your input array : y = x + a*x_shifted. Take a look at the documentation, it is pretty well written : fr.mathworks.com/help/matlab/index.html $\endgroup$ – Albits Nov 23 '17 at 7:47

This is probably not the answer wanted but you can seperate them by generating groups of 3 of them ( simulating them and adding them together ) and then subtracting that group signal from the true signal. An elementary answer for sure but it doesn't use transforms.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.