------------------------------------------------------
Défi : créer une fonction qui, pour un vecteur donné, renvoie ce même vecteur, dans l'ordre inverse et dont chaque valeur est multipliée par 2.
Contrainte : la fonction doit être opérationnelle pour un vecteur colonne comme pour un vecteur ligne.
------------------------------------------------------
La recherche dans la documentation MATLAB avec le mot-clé flip nous donne :
Il n'y a donc pas, a priori de fonction universelle, et il faut donc tester le type de vecteur en début de fonction, comme ceci :>> lookfor flip
FLIPDIM Flip matrix along specified dimension.
FLIPLR Flip matrix in left/right direction.
FLIPUD Flip matrix in up/down direction.
Testons :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 function V=test(V) if size(V,1)==1 % Vecteur ligne type V=[1 2 3] V = 2*fliplr(V); % ou % V = 2*flipdim(V,1); else % Vecteur colonne type V=[1;2;3] V = 2*flipud(V); % ou % V = 2*flipdim(V,2); end
Tout est OK... mais est-il possible de faire plus court ?>> V=[1 2 3]
V =
1 2 3
>> W=test(V)
W =
6 4 2
>> V=[1;2;3]
V =
1
2
3
>> W=test(V)
W =
6
4
2
Indice : solution en une ligne (déclaration de la fonction mise à part) :
------------------------------------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 function W=test(V) < Votre solution >
Vous pouvez mettre vos solutions à la suite de ce message
![]()
Partager