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 Kommentare

Azzi Abdelmalek
Azzi Abdelmalek am 30 Apr. 2013
What is I?
Joe Koning
Joe Koning am 30 Apr. 2013
ah sorry, I is the required amplitude, in this case I = 20000; period = 1/2000

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Azzi Abdelmalek
Azzi Abdelmalek am 30 Apr. 2013
Bearbeitet: Azzi Abdelmalek am 30 Apr. 2013

0 Stimmen

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 Kommentare

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 am 30 Apr. 2013
ahhh of course, thankyou

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Wharengaro Ruha
Wharengaro Ruha am 2 Okt. 2019

0 Stimmen

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

Kategorien

Community Treasure Hunt

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

Start Hunting!

Translated by