[Matlab] fonction porte

fonction porte [Matlab] - Langages fonctionnels - Programmation

Marsh Posté le 14-04-2011 à 22:17:32    

Bonjour à tous et à toute.
 
Voici mon soucis , j'essaie de faire une fonction porte sur matlab allant d'un nombre réel a un autre.
Ex = 0 sur [ 0 ; 0,25 ] et 1 sur [ 0,25 ; 0,60] puis 0 sur [0,60 ; 1]
 
Dans un 1er temps j'ai fait  
 
Porte = [ zeros(1,nA) ones(1,nB) zeros(1,nC) ];
 
Ca marche sans soucis, mais je cherche à faire une fonction porte entre des nombres qui ne sont pas des entiers...donc probleme
 
Connaisez vous une autre methode ?
 
Merci de votre réponse.

Reply

Marsh Posté le 14-04-2011 à 22:17:32   

Reply

Marsh Posté le 15-04-2011 à 01:09:50    

t = 0:0.01:1;
y = heaviside(t-0.25)-heaviside(t-0.6);
plot(t,y)


---------------
„Ich kann, weil ich will, was ich muss.“ I. Kant
Reply

Marsh Posté le 15-04-2011 à 09:34:57    

merci beaucoup. je vais essayer de resoudre mon probleme comme ca.

Reply

Marsh Posté le 15-04-2011 à 15:51:51    

Et Si maintenant je veux que cette fonction porte soit répétée périodiquement de 0 a une certaine valeur M.
 
J'avais pensé à faire une convolution par un peigne de Dirac...mais j'avoue que je ne vois pas du tout comment mettre ca en oeuvre avec Matlab.
 
quelqu'un serais capable de m'aider à nouveau ? :)

Reply

Marsh Posté le 15-04-2011 à 16:59:13    

function [R] = reseau(L);
 
 
K=1030E-9;
p=100E-3;
 
t=0:0,001:ceil((L+2*K/p)/p);
 
n=0:ceil((L+2*K/p)/p);
 
d=dirac(t_n*p);
 
R = conv(U,d);
end
 
ou U est une fonction porte
 
function [U] = foncU(x,nb)
 
 
t=linspace(0,1,nb);
 
 v=zeros(nb,1);
     
    for i =1:2*M
    v(i)=(-1)^i.*heaviside(t-x(i));
 
    end  
      U= heaviside(t)+2.*sum(v);
end
 
pensez vous que ca puisse marcher ?
 
je n'ai pas matlab chez moi pour tester ^^
     

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed