Extract signal components from mixed signal
이전 댓글 표시
Hi,
I have signal that is consists of three individual signals. How can I separate these individual signals from the mixed signal. I did the FFT and then IFFT to get back to the original signal. The same way I wanna get the three individual signals (I_first, I_second, I_third) by performing FFT and IFFT.
The code I used:
clc
clear all;
close all;
format long
m=1000; I1=0.5; I2=0.3; I3=0.2; L1=100*m; L2=1000*m; n1=1; n2=1.446;
lam1=1530; lam2=1565;
inc=(lam2-lam1)/(2^10-1);
lam=lam1:inc:lam2;
Q12=(4*pi*n1*L1)./lam;
Q23=(4*pi*n2*L2)./lam;
Q13=Q12+Q23;
I_first=I1+I2+2*sqrt(I1*I2).*cos(Q12); % first signal
I_second=I2+I3+2*sqrt(I2*I3).*cos(Q23); % second signal
I_third=I1+I3+2*sqrt(I1*I3).*cos(Q13); % third signal
I=I1+I2+I3+2*sqrt(I1*I2).*cos(Q12)+2*sqrt(I2*I3).*cos(Q23)+2*sqrt(I1*I3).*cos(Q13); % Mixed signal
N=length(lam);
fs=1/inc;
dt=1/fs;
df=1/(N*dt);
f=(-N/2:N/2-1)*df;
xxx=5;
subplot(xxx,1,1)
plot(lam,I)
title('Mixed signal')
y=fft(I);
y1=fftshift(y);
y2=abs(y1);
subplot(xxx,1,2)
plot(f,abs(y))
title('FFT')
subplot(xxx,1,3)
plot(f,y2)
title('FFTshift')
y3=ifft(ifftshift(y1));
subplot(xxx,1,4)
plot(lam,abs(y3))
title('IFFTshift')

채택된 답변
추가 답변 (2개)
Abhishek Gupta
2020년 12월 17일
1 개 추천
Hi,
As per my understanding, you want to extract different components of a mixed signal. This task can be done in the following steps: -
- Retrieve frequencies of the components using Fast Fourier Transform (FFT)
- Use bandpass() or highpass() filter to extract different components out of the mixed signal.
Also, referring to the following MATLAB Answers, which might help you in achieving the task: -
댓글 수: 1
Sohel Rana
2020년 12월 17일
편집: Sohel Rana
2020년 12월 17일
Wayne King
2020년 12월 23일
0 개 추천
Hi Sohel, for the given frequencies and signal lengths, the spectra of I_second and I_third are not delta functions in frequency. So the fact that their peaks are slightly different isn't going to be sufficient. If you knew they were sine waves and knew what their frequencies were, perhaps it would be possible to resample them in such as way that their respective frequencies (with all their associated energy) fell exactly on a DFT bin (and separate DFT bins) and then you could perhaps separate them, but here there is considerable overlap so I don't see how you are going to separate them as you hope to. I'm sorry I don't have time to read those papers, but if those papers contain the work of people constructing signals exactly like yours and claiming to separate I_second and I_third perfectly, perhaps contacting them directly? Maybe they would help.
Wayne
카테고리
도움말 센터 및 File Exchange에서 Spectral Measurements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!