periodic function with n cycles
11 次查看(过去 30 天)
显示 更早的评论
Hi, I need to create a periodic function and plot it.
F(x)=sqrt(3) + *Sin(t -2*pi/3) --> 0<t<pi/3
F(x)=Sin(t) --> pi/3 <t<2*pi/3
repeat the signal 0<t<3*pi with the period 2*pi/3 Then plot(t,Fx)
------
At the moment I use the following code
>> t1=0:.01:pi/3;
>> t2=pi/3:.01:2*pi/3;
A=sqrt(3) + sin(t1*2*pi- 2*pi/3);
B=sin(t2);
plot(t1,A,t2,B)
This method is produce the answer a one cycle. However it is quite difficult to repeat the pattern for multiple times.
Can any one n please suggest way of doing this
采纳的回答
Andrei Bobrov
2013-12-8
编辑:Andrei Bobrov
2013-12-10
t = 0:pi/100:6*pi;
t1 = rem(t,2*pi/3);
l = t1 < pi/3 ;
F = @(t,l)sqrt(3)*l + sin((2*pi*l + ~l).*t -2*pi/3*l);
out = F(t1,l);
plot(t,out)
ADD
t = 2*pi*(0:.0005:1).';
t1 = rem(t,2*pi/3);
l1 = t1 < pi/3;
l0 = ~l1;
y = zeros(numel(t),2);
y(l1,1) = sqrt(3) + sin(t1(l1) - 2*pi/3);
y(l0,1) = sin(t1(l0));
y(l1,2) = sin(t1(l1) - 2*pi/3);
y(l0,2) = sin(t1(l0)) - sqrt(3);
yy = sin([t,bsxfun(@plus,t,[1, -1]*2*pi/3)]);
plot(t,[y,yy]);
2 个评论
Behrang Hoseini
2022-5-22
Hi,
I want to use this method to develop a periodic window to apply to a time function. The thing I could't understand is the second added part:
t = 2*pi*(0:.0005:1).';
t1 = rem(t,2*pi/3);
l1 = t1 < pi/3;
l0 = ~l1;
y = zeros(numel(t),2);
y(l1,1) = sqrt(3) + sin(t1(l1) - 2*pi/3);
y(l0,1) = sin(t1(l0));
y(l1,2) = sin(t1(l1) - 2*pi/3);
y(l0,2) = sin(t1(l0)) - sqrt(3);
yy = sin([t,bsxfun(@plus,t,[1, -1]*2*pi/3)]);
plot(t,[y,yy]);
do we need to add it?
更多回答(2 个)
Azzi Abdelmalek
2013-12-8
t1=0:.01:pi/3;
t2=pi/3:.01:2*pi/3;
A=sqrt(3) + sin(t1*2*pi- 2*pi/3);
B=sin(t2);
t=[t1 t2],
y=[A,B]
plot(t,y)
m=5 % Repetition
n=numel(t);
tt=0:0.01:n*m*0.01-0.01
yy=repmat(y,1,m)
plot(tt,yy)
4 个评论
Andrei Bobrov
2013-12-10
编辑:Andrei Bobrov
2013-12-10
Hi Rashmil! See my variant of your problem (after ADD in my answer)
sixwwwwww
2013-12-8
编辑:sixwwwwww
2013-12-8
you can do it as follow:
count = 1;
for t = 0:pi/3:pi - pi/3
if mod(count, 2) == 1
x = linspace(t, t + pi/3);
y = sqrt(3) + sin(x * 2 * pi - 2 * pi/3);
plot(x, y), hold on
count = count + 1;
else
x = linspace(t, t + pi/3);
y = sin(x);
plot(x, y), hold on
count = count + 1;
end
end
Maybe following link is also helpful for you:
2 个评论
sixwwwwww
2013-12-9
It was selected to choose between the plots curve should be plotted. It doesn't have effect on output actually. The output is controlled by the range in the for loop:
for t = 0:pi/3:pi - pi/3
changing pi - pi/3 to pi - pi/3 will give more periods of the plot
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Particle & Nuclear Physics 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!