Matlab : Faire une fonction avec des matrices plutôt qu'une boucle for

Matlab : Faire une fonction avec des matrices plutôt qu'une boucle for - Divers - Programmation

Marsh Posté le 12-12-2014 à 01:33:57    

Bonsoir
J'ai un petit souci dans matlab
Je dois coder une fonction par morceaux.
J'ai un vecteur x, je veux pour chaque élément de x appliquer une fonction définie par morceaux.
La méthode intuitive consistant à dire que je vais créer une fonction de R dans R et qu'ensuite matlab va tout seul comme un grand considérer que f(1,2)=(f(1),f(2)) n'a pas fonctionné.. Du coup j'ai du utiliser la boucle for

 

function tt = tata( x )
l=length(x)

 

for i=1:l

 

if x(i)<-300
tt(i)=-1000
elseif x(i) < -10
etc...
else
    tt(i)=1000

 

end
end
tt

 

end

  

Seul souci : mon vecteur x est de longueur 18 000 !
Un simple calcul tata(x) prend à peu près 10 minutes..

 

Comment écrire cette fonction de manière rapide ?

 

Merci

 

P.S. : le top du top : quand j'écris pour terminer mon calcul cette ligne :
xc=bx100 +tata(bdbx)
il me dit que bx100 et tata(bdbx) n'ont pas la même longueur ! Alors que tous les deux sont exactement de longueur 18000, je viens de perdre 10 minutes de calcul pour le vérifier :o
Merci de votre aide


Message édité par Laska- le 12-12-2014 à 01:35:19
Reply

Marsh Posté le 12-12-2014 à 01:33:57   

Reply

Marsh Posté le 16-12-2014 à 17:25:29    

Salut,
 
Je pense qu'il faut partir sur cela
 
function tt = tata( x )
 
tt = zeros(length(x),1)
 
tt( x < -300 )= -300;
tt( x < -10 )= -10;
 
etc...
 
tt( x == 0 )= -1000;


Message édité par baykah le 16-12-2014 à 17:40:23
Reply

Sujets relatifs:

Leave a Replay

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