Segmented Sinewave
이전 댓글 표시
Hi How Can i define a periodic signal like a segmented sine wave but with different amplitudes for segments ? Thanks.
답변 (4개)
Matt Tearle
2011년 2월 16일
Something like this?
p = 3;
t = linspace(0,10*p,201);
tseg = p*[0 1 4 5:9];
n = length(tseg)-1;
y = sin(2*pi*t);
A = randi(10,n,1)
for k = 1:n
idx = (t>tseg(k)) & (t<tseg(k+1));
y(idx) = A(k)*y(idx);
end
plot(t,y,tseg,tseg*0,'o')
Ali
2011년 2월 20일
0 개 추천
댓글 수: 5
Matt Tearle
2011년 2월 20일
OK, sorry, then I guess I don't understand what that means. Can you explain it or point me to a reference?
Ali
2011년 2월 20일
Walter Roberson
2011년 2월 20일
Please clarify what a "segment" is for this purpose. Matt's code presented sets different amplitudes for segment boundaries that are delimited by time, which would seem to be what you want except that perhaps you need a slightly different way to determine the "segment" boundaries.
Jiro Doke
2011년 2월 21일
Ali, you use the word "segment" and "step". Do you mean for each "period" (when it goes through one cycle of sine wave)? In Matt's example, if you set p = 1, and set tseg = 0:9, you can change the amplitude for every period.
Ali
2011년 2월 22일
Jiro Doke
2011년 2월 22일
Okay, I'm still not entirely sure what you mean, but based on your response to one of the questions, it seems like you just want to discretize your sine wave.
If you just want to create a plot:
% 20 segments
t = linspace(0, 2*pi, 20);
y = sin(t);
stairs(t, y)
If you want coordinates for the "segmented" sine wave:
t2 = reshape([t;t], 1, []);
t2 = t2(2:end);
y2 = reshape([y;y], 1, []);
y2 = y2(1:end-1);
카테고리
도움말 센터 및 File Exchange에서 Measurements and Statistics에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!