help defining a square wave

6 vues (au cours des 30 derniers jours)
Joe Koning
Joe Koning le 30 Avr 2013
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 commentaires
Azzi Abdelmalek
Azzi Abdelmalek le 30 Avr 2013
What is I?
Joe Koning
Joe Koning le 30 Avr 2013
ah sorry, I is the required amplitude, in this case I = 20000; period = 1/2000

Connectez-vous pour commenter.

Réponse acceptée

Azzi Abdelmalek
Azzi Abdelmalek le 30 Avr 2013
Modifié(e) : Azzi Abdelmalek le 30 Avr 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 commentaires
Azzi Abdelmalek
Azzi Abdelmalek le 30 Avr 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 le 30 Avr 2013
ahhh of course, thankyou

Connectez-vous pour commenter.

Plus de réponses (1)

Wharengaro Ruha
Wharengaro Ruha le 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

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by