quarta-feira, 6 de maio de 2009

Tutorial Scilab - 7 [Operações elemento a elemento]

[English version here.]

Estão vendo como é difícil atualizar o MultiSign e escrever a dissertação? Mas assim que possível iremos regularizar a situação.

Vamos abordar as operações elemento a elemento usando o Scilab.

Este post será basicamente de exemplos.

Vamos supor que temos duas matrizes de mesmo tamanho (X e Y) e queremos multiplicar (Z1) e dividir (Z2) os elementos correspondentes:

X = [x11 x12 x13;
x21 x22 x23;
x31 x32 x33].

Y = [y11 y12 y13;
y21 y22 y23;
y31 y32 y33].

Z1 = [x11*y11 x12*y12 x13*y13;
x21*y21 x22*y22 x23*y23;
x31*y31 x32*y32 x33*y33].

Z2 = [x11/y11 x12/y12 x13/y13;
x21/y21 x22/y22 x23/y23;
x31/y31 x32/y32 x33/y33].

Não existe um operador matemático matricial para tal operação, mas o Scilab tem um recurso para fazer isso. Observem a seguir.

-->X = zeros(3,3);

-->X(:) = [1:9]'
X =

1. 4. 7.
2. 5. 8.
3. 6. 9.

-->Y = ones(3,3) + X'
Y =

2. 3. 4.
5. 6. 7.
8. 9. 10.

-->Z1 = X.*Y
Z1 =

2. 12. 28.
10. 30. 56.
24. 54. 90.

-->Z1 = X./Y
Z1 =

0.5 1.3333333 1.75
0.4 0.8333333 1.1428571
0.375 0.6666667 0.9

As operações de soma e subtração matriciais operam elemento a elemento.


Operações lógicas

Agora vamos fazer operações lógicas com matrizes.

Os operadores:

  • & - AND;
  • | - OR;
  • ~ - NOT.
E um código de exemplo:

-->X = rand(3,3) > 0.2
X =

F T T
T F T
T T T

-->Y = rand(3,3,'normal') > 0.5
Y =

T T F
T F T
F F F

-->Z1 = X & Y
Z1 =

F T F
T F T
F F F

-->Z2 = X | Y
Z2 =

T T T
T F T
T T T

-->Z3 = ~X
Z3 =

T F F
F T F
F F F

-->Z4 = (~X) | Y
Z4 =

T T F
T T T
F F F

Com isso, fechamos a parte de operações matriciais básicas.

Nenhum comentário: