Signal Decomposition for a mixed signal

73 views (last 30 days)
Coo Boo
Coo Boo on 18 Dec 2019
Commented: Srivatsa Dasa on 2 Apr 2022
Hi friends,
Suppose we have a mixed signal X composed of three component signals x1, x2, and x3:
t=0:0.00001:0.3;
x1=(exp(-3*t)).*(0.2*sin(2*pi*400*t));
x2=1.2+(exp(-1.5*t)).*(1.1*sin(2*pi*40*t+pi/6));
x3=(exp(-5*t)).*(0.8*sin(2*pi*75*t+pi/3));
X=x1+x2+x3;
subplot(4,1,1);
plot(t,x1);title('Component signal: x1');
subplot(4,1,2);
plot(t,x2);title('Component signal: x2');
subplot(4,1,3);
plot(t,x3);title('Component signal: x3');
subplot(4,1,4);
plot(t,X);title('Mixed signal: X=x1+x2+x3');
Now, inversely, how can we obtain the samples of the three component signals x1, x2, and x3 without any additional information except the samples of the mixed signal X?
I would be very grateful if anyone could provide a code or efficient technique for this challenging example.
Thanks in advance for your help.
Note: Unfortunately, the ICA package and also the function emd() did not lead to a desired result. Is there any other practical solution for this example?
  5 Comments
Ridwan Alam
Ridwan Alam on 19 Dec 2019
Posted below as an answer. Hope this helps!

Sign in to comment.

Accepted Answer

Ridwan Alam
Ridwan Alam on 19 Dec 2019
t=0:0.00001:0.3;
x1=(exp(-3*t)).*(0.2*sin(2*pi*400*t));
x2=1.2+(exp(-1.5*t)).*(1.1*sin(2*pi*40*t+pi/6));
x3=(exp(-5*t)).*(0.8*sin(2*pi*75*t+pi/3));
X=x1+x2+x3;
untitled.png
fs = 1/.00001;
z1 = highpass(X,350,fs);
z3 = bandpass(X,[60 100],fs);
z2 = X - (z1 + z3);
Z = z1 + z2 + z3;
untitled1.png
  3 Comments
Srivatsa  Dasa
Srivatsa Dasa on 2 Apr 2022
how to decompose a random .wav signal if its pass bands are unknown. Is it possible to decompose the signal

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!