Matlab : Faire une fonction avec des matrices plutôt qu'une boucle for - Divers - Programmation
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;
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
Merci de votre aide
Message édité par Laska- le 12-12-2014 à 01:35:19