# periodic function with n cycles

32 views (last 30 days)
Rashmil Dahanayake on 8 Dec 2013
Commented: Behrang Hoseini on 22 May 2022
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
Image Analyst on 8 Dec 2013
Sounds like your homework. Is it?

Andrei Bobrov on 8 Dec 2013
Edited: Andrei Bobrov on 10 Dec 2013
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)
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 CommentsShowHide 1 older comment
Behrang Hoseini on 22 May 2022
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?

Azzi Abdelmalek on 8 Dec 2013
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)
zhenning li on 1 Nov 2020
truely thanks,it helps a lot!

sixwwwwww on 8 Dec 2013
Edited: sixwwwwww on 8 Dec 2013
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
##### 2 CommentsShowHide 1 older comment
sixwwwwww on 9 Dec 2013
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

### Categories

Find more on Correlation and Convolution in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by