I need a code to separate each cycle of sine wave.
조회 수: 6 (최근 30일)
이전 댓글 표시
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
답변 (2개)
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.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Annotations에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
