help defining a square wave

1 view (last 30 days)
Joe Koning
Joe Koning on 30 Apr 2013
Answered: Wharengaro Ruha on 2 Oct 2019
Im trying to define a square wave that starts only after 0.01 milliseconds. The code is below. The amplitude and frequency are both correct from the code below but it starts immediately from time 0 rather than from time 0.01, as if the if statement below is always true. what is going wrong?
t= linspace(0,0.03,1000);
i_block = 0;
for k = 1:1000
t(k)
if t(k) >= 0.01
i_block = mod(t/period, 1) > 0.5;
i_block = -2*I*i_block + I;
end;
end;
  2 Comments
Joe Koning
Joe Koning on 30 Apr 2013
ah sorry, I is the required amplitude, in this case I = 20000; period = 1/2000

Sign in to comment.

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 30 Apr 2013
Edited: Azzi Abdelmalek on 30 Apr 2013
t= linspace(0,0.03,1000);
period=0.03/10
I=10
i_block = 0;
for k = 1:1000
t(k)
if t(k) >= 0.01
i_block(k) = mod(t(k)/period, 1) > 0.5;
i_block(k) = -2*I*i_block(k) + I;
end;
end;
plot(t, i_block,'r')
  2 Comments
Azzi Abdelmalek
Azzi Abdelmalek on 30 Apr 2013
or
t= linspace(0,0.03,1000);
period=0.03/10
I=10
idx=find(t>=0.01)
i_block(1:idx(1)-1)=0
i_block(idx) = mod(t(idx)/period, 1) > 0.5
i_block(idx) = -2*I*i_block(idx) + I
plot(t, i_block,'r')
Joe Koning
Joe Koning on 30 Apr 2013
ahhh of course, thankyou

Sign in to comment.

More Answers (1)

Wharengaro Ruha
Wharengaro Ruha on 2 Oct 2019
I need to make a square wave
at 1v for 2000s
then -1v for 2000s
then 1v for 4000s
then -1v for 6000s
then 1v for 2000s

Categories

Find more on Software Development Tools 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!