help defining a square wave

3 Ansichten (letzte 30 Tage)
Joe Koning
Joe Koning am 30 Apr. 2013
Beantwortet: Wharengaro Ruha am 2 Okt. 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 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
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
Azzi Abdelmalek
Azzi Abdelmalek am 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 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
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

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by