¿Cómo se genera la señal de pulso descrita en Matlab (Simulink)?

0

Quiero implementar la siguiente señal:

I(t)=500*(sin(pi.t/0.3))^2,tpertenece{0,Ts}

=0,tpertenece{Ts,T}

Aquí,T=0.8yTs=0.3

Elcódigoqueprobé:

t=0:0.001:25;d=0:0.8:25;y=pulstran(t,d,'rectpuls',0.3);ut=500.*((sin(pi*t/0.3)).^2).*y;plot(t,ut)xlabel'Time(s)',ylabelWaveform

Laformadeondageneradasedeformamucho,porejemplo,laformadeondageneradanoconsisteenpicosespaciadosuniformemente.

Editar:modificóelcódigoperoaúnquedanproblemas.

t=0.01*[0:3000]';d=0.8*[0:1500]';y=pulstran(t,d,'rectpuls',0.3);ut=500.*((sin(pi*(t-floor(t/0.8)*0.8)/0.3)).^2).*y;plot(t,ut)

Principalmente,enlugarde1picoparaelestadoONde0,3s,haydospicos.

    
pregunta Rachit Ajitsaria

1 respuesta

1

Todavía no entiendo cuál es tu período, por lo que generé dos formas de hacerlo. El primer método crea un vector mod del tiempo y genera un vector cero, el vector cero pone a cero los datos. Como se muestra en la primera figura.

t = 0 : 0.001 : 2;
T = 0.8;
Tz = 0.4; %this is T = Tz + Ts
yy = mod(t,T) %create mod vector to periodize time vector
yy(yy>Tz) = 0; %zero out unwanted portion of vector
ut = 500.*((sin(pi*t/T)).^2);
utt = ut.*(yy>0); %this is the zeroed out sine wave
figure,plot(t,ut),hold on,plot(t,(yy>0)*500,'g');
plot(t,utt,'r+')
xlabel 'Time (s)', ylabel Waveform
legend('i(t)','Mod time vector','sin^2(t) zeroed out')

td=0.001;%timevectorresoultT=0.8;Tgap=0.34;%vectorgapTend=2;t=0:td:Tend;ttt=[0:td:T-tdzeros(1,round(Tgap/td))];%createvectorwithzerogaptt=repmat(ttt,1,1+round(length(t)/length(ttt)));%repeatthevectorforaslongasthetimevectoris+1tt=tt(1:length(t));%truncateittobethesamesizeasthetimevectorut=500.*((sin(pi*tt/T)).^2);figure;plot(t,ut),xlabel'Time(s)',ylabelWaveform

Estecreaunespacioentrecadafunción\$sin^2(t)\$,lohacecreandounvectordetiempoconcerosenélyluegoreplicandoelvector.Nousélosmismosperíodosdetiempo,asíquetendríasquerevisarelcódigoyresolverloportimismo.

    
respondido por el laptop2d

Lea otras preguntas en las etiquetas