Matlab - Remarques à propos des scalaires, vecteurs, matrices et tableaux

Où l'on verra également la différence entre :

*

.*

/

./

^

.^

 

>> a = 6

a =

6

>> b = [ 1 3 8 ]

b =

1 3 8

>> c = [ 2 10 ; 3 8]

c =

2 10

3 8

>> d = [ 1 2 ; 3 4 ]

d =

1 2

3 4

>> e = [ -2 -8 –3 ]

e =

-2 -8 -3

>> f = [ 8 ; 5 ; 2 ]

f =

8

5

2

>> whos

Name Size

a 1 by 1

b 1 by 3

c 2 by 2

d 2 by 2

e 1 by 3

f 3 by 1

 

a est un scalaire (autrement dit une matrice 1x1)

b est un vecteur ligne (autrement dit une matrice 1x3)

c est une matrice (2x2)

d est une matrice (2x2)

e est un vecteur ligne (autrement dit une matrice 1x3)

f est un vecteur colonne (autrement dit une matrice 3x1)

 

Multiplication de matrice

*

Multiplication de tableau (élément par élément)

.*

Puissance de matrice

^

Puissance de tableau (élément par élément)

.^

Division de matrice

B / A est équivalent à B * inv(A)

/

Division de tableau (élément par élément)

. /

 

* est le produit matriciel :

>> [ 2 10 ; 3 8] *[ 1 2 ; 3 4 ]

ans =

32 44

27 38

.* désigne la multiplication élément par élément, ce qui est complètement différent :

>> [ 2 10 ; 3 8] .* [ 1 2 ; 3 4 ]

ans =

2 20

9 32

>> [ 2 10 ; 3 8] / [ 1 2 ; 3 4 ]

ans =

11 -3

6 -1

>> [ 2 10 ; 3 8] ./ [ 1 2 ; 3 4 ]

ans =

2 5

1 2

>> [ 2 10 ; 3 8] ^2

ans =

34 100

30 94

>> [ 2 10 ; 3 8] .^2

ans =

4 100

9 64

>> 6*[ 1 3 8 ]

ans =

6 18 48

>> 6.*[ 1 3 8 ]

ans =

6 18 48

>> 6*[ 2 10 ; 3 8]

ans =

12 60

18 48

>> 6.*[ 2 10 ; 3 8]

ans =

12 60

18 48

 

>> [ 1 3 8 ].*[ -2 -8 –3 ]

ans =

-2 -24 -24

 

Le calcul suivant n'a pas de sens :

>> [ 1 3 8 ] *[ -2 -8 –3 ]

??? Error using ==> *

Inner matrix dimensions must agree.

>> [ 1 3 8 ] .^2

ans =

1 9 64

 

Le calcul suivant n'a pas de sens :

>> [ 1 3 8 ] ^2

??? Error using ==> ^

Matrix must be square.

 

Soit un vecteur ligne 1x7 :

>> x = 0 : 6

x =

0 1 2 3 4 5 6

>> y = (x+1).^2

y =

1 4 9 16 25 36 49

y est un vecteur ligne 1x7.

 

>> y = (x+1)^2

??? Error using ==> ^

Matrix must be square.

 

Testons avec une matrice carrée 2x2 :

>> x = [ 1 2 ; 3 4 ]

x =

1 2

3 4

>> y = (x+1).^2

y =

4 9

16 25

>> y = (x+1)^2

y =

16 21

28 37

 

>> t = 0 : 5

t =

0 1 2 3 4 5

>> u = t.^2 + 3.*t./ (5 + 2.*t)

u =

0 1.4286 4.6667 9.8182 16.9231 26.0000

>> u = t^2 + 3*t /(5 + 2*t)

??? Error using ==> ^

Matrix must be square.

 

>> z = 2 : 2 : 12

z =

2 4 6 8 10 12

>> t./z

ans =

0 0.2500 0.3333 0.3750 0.4000 0.4167

 

© Fabrice Sincère

http://perso.orange.fr/fabrice.sincere/