MATLAB Answers

Primo
0

I need a code to separate each cycle of sine wave.

Asked by Primo
on 27 Dec 2014
Latest activity Answered by s0ter48 on 8 Jul 2019
I need a code to separate each cycle of a sine wave. Suppose I have a sine wave with 10 cycle, so I need each cycle separated sata. I have attached an image to make it clear.

  0 Comments

Sign in to comment.

Tags

2 Answers

Answer by Star Strider
on 27 Dec 2014

This works:
t = linspace(0,10*pi,200);
x = sin(t);
mcs = x .* circshift(x, [0 -1]);
zxix = find(mcs <= 0);
for k1 = 1:2:size(zxix,2)-1
zx(k1) = interp1(x(zxix(k1):zxix(k1)+1), t(zxix(k1):zxix(k1)+1), 0);
end
figure(1)
plot(t, x)
hold on
plot(zx, zeros(size(zx)), '+r', 'MarkerSize',10)
hold off
grid
The ‘mcs’ variable detects the nearest zero-crossings, ‘zxix’ is their indices, and ‘zx’ uses interp1 to calculate the ‘t’ (the independent variable) coordinate corresponding to the actual zero-crossing. The plot displays the signal and the zero-crossings that distinguish the various cycles of your sine wave.

  0 Comments

Sign in to comment.


Answer by s0ter48 on 8 Jul 2019

Hey guys,
i know this is an old one but i can´t use this on my signals? And im not understanding why.
Maby a dumb one but I hope someone sees my mistake.
Thanks in advance.
In the attachment u will find my data for testingsin.png

  0 Comments

Sign in to comment.