How to write code for a composite signal with instantaneous frequency

30 views (last 30 days)
Jan Ali
Jan Ali on 20 Nov 2020
Commented: Jan Ali on 10 Jan 2021
Anyone can help me with writing code for this function?

Accepted Answer

Swetha Polemoni
Swetha Polemoni on 23 Nov 2020
Hi Jan Ali,
It is my understanding that you want to add three signals that are defined only in particular intervels of time. Following code might help you.
t = (-1:0.01:1); % defining time axis
unitstep1=t>=0; % unitsetp1 takes 1 only when t is greater than equal to 0
unitstep2=t>=0.1; % unitsetp2 takes 1 only when t is greater than equal to 0.1
unitstep3=t>=0.18;% unitsetp3 takes 1 only when t is greater than equal to 0.18
unitstep4=t>=0.3; % unitsetp4 takes 1 only when t is greater than equal to 0.3
rect1=unitstep1-unitstep2; % rect1 takes 1 only when 0<=t<0.1
rect2=unitstep2-unitstep3; % rect2 takes 1 only when 0.1<=t<0.18
rect3=unitstep3-unitstep4; % rect2 takes 1 only when 0.18<=t<0.3
% taking three random sine siganls
Signal1=sin(2*pi*50*t);
Signal2=sin(2*pi*150*t);
Signal3=sin(2*pi*500*t);
% Composite signal
Sc= Signal1*rect1+Signal2*rect2+Signal3*rect3;
  8 Comments
Jan Ali
Jan Ali on 10 Jan 2021
Dear Swetha,
I found a workaround for this problem :)
fs=2000;
t = linspace(0,0.3,1000);
s1 = sin(2*pi*30*t) + 0.2*sin(2*pi*70*t);
s2 = sin(2*pi*30*t) + 0.2*sin(2*pi*70*t) + sin(2*pi*500*t).*exp(-30*t-0.1);
s3 = sin(2*pi*30*t) + 0.2*sin(2*pi*70*t);
if 0.1 > t >= 0
s1;
elseif 0.18 > t >= 0.1
s2;
else
s3;
end
s=[s1 s2 s3];
t = linspace(0,0.3,3000);
plot(t, s, 'b')
I really appreciate your kind support and the time you spent for coding.
Wish you all the best

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!

Translated by