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

조회 수: 6 (최근 30일)
Primo
Primo 2014년 12월 27일
답변: youjarr 2019년 7월 8일
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.

답변 (2개)

Star Strider
Star Strider 2014년 12월 27일
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.

youjarr
youjarr 2019년 7월 8일
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

카테고리

Help CenterFile Exchange에서 Annotations에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by