------------------------------------------------------

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 :
>> lookfor flip
FLIPDIM Flip matrix along specified dimension.
FLIPLR Flip matrix in left/right direction.
FLIPUD Flip matrix in up/down direction.
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 :

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
Testons :
>> 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
Tout est OK... mais est-il possible de faire plus court ?

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