A.3 Matrizes
No Scilab, matriz é o tipo básico de dados, a qual é definida por seu número
de linhas, colunas e tipo de dado (real, inteiro, lógico, etc.). Uma matriz
no
Scilab é definida usando-se a seguinte sintaxe:
A = [ a11 , a12 , ... , a1n ; ...; am1 , am2 , ... , amn ]
Exemplo A.3.1. Defina a matriz:
Solução. No Scilab, digitamos:
-->A = [1 , 2 , 3 ; 4 , 5 , 6]
A =
1. 2. 3.
4. 5. 6.
A seguinte lista contém uma série de funções que geram matrizes
particulares:
eye matriz identidade
linspace vetor de elementos linearmente espaçados
ones matriz cheia de uns
zeros matriz nula
A.3.1 O operador “:”
O operador “:” cria um vetor linha de elementos. A sintaxe:
v = i:s:j
cria um vetor linha:
|
| (A.2) |
onde é o maior
inteiro tal que .
Exemplo A.3.2. Veja as seguintes linhas de comando:
-->v = 10:-2:3
v =
10. 8. 6. 4.
-->u = 2:6
u =
2. 3. 4. 5. 6.
A.3.2 Obtendo dados de uma matriz
A função size retorna as dimensões de uma matriz, por exemplo:
-->A = ones(3,2)
A =
1. 1.
1. 1.
1. 1.
-->[nl, nc] = size(A)
nc =
2.
nl =
3.
informando que a matriz A tem três linhas e duas colunas.
Existem vários métodos para acessar os elementos de uma matriz dada
A:
- a matriz inteira acessa-se com a sintaxe:
A
- o elemento da -ésima
linha e -ésima
coluna acessa-se usando a sintaxe:
A(i,j)
- o bloco formado pelas linhas ,
e pelas
colunas ,
obtém-se usando a sintaxe:
A(i1:i2, j1:j2)
Exemplo A.3.3. Veja as seguintes linhas de comando:
-->A = rand(3,4) //gera uma matriz randômica
A =
0.2113249 0.3303271 0.8497452 0.0683740
0.7560439 0.6653811 0.6857310 0.5608486
0.0002211 0.6283918 0.8782165 0.6623569
-->A //mostra toda a matriz A
ans =
0.2113249 0.3303271 0.8497452 0.0683740
0.7560439 0.6653811 0.6857310 0.5608486
0.0002211 0.6283918 0.8782165 0.6623569
-->A(2,3) //acessa o elemento a23
ans =
0.6857310
-->A(2:3,2:4) //acessa um bloco de A
ans =
0.6653811 0.6857310 0.5608486
0.6283918 0.8782165 0.6623569
Definida uma matriz
no Scilab, as seguintes sintaxes são bastante úteis:
A(:,:) toda a matriz
A(i:j,k) os elementos das linhas i até j (inclusive) da k-ésima coluna
A(i,j:k) os elementos da i-ésima linha das colunas j até k (inclusive)
A(i,:) a i-ésima linha da matriz
A(:,j) a j-ésima coluna da matriz
A(i,$) o elemento da i-ésima linha e da última coluna
A($,j) o elemento da última linha e da j-ésima coluna
Exemplo A.3.4. Veja as seguintes linhas de comando:
-->B = rand(4,4)
B =
0.2113249 0.6653811 0.8782165 0.7263507
0.7560439 0.6283918 0.0683740 0.1985144
0.0002211 0.8497452 0.5608486 0.5442573
0.3303271 0.6857310 0.6623569 0.2320748
-->aux = B(:,2); B(:,2) = B(:,3); B(:,3) = aux
B =
0.2113249 0.8782165 0.6653811 0.7263507
0.7560439 0.0683740 0.6283918 0.1985144
0.0002211 0.5608486 0.8497452 0.5442573
0.3303271 0.6623569 0.6857310 0.2320748
A.3.3 Operações matriciais e elemento-a-elemento
As operações matriciais elementares seguem a mesma sintaxe que as
operações elementares de números. Agora, no Scilab, também podemos fazer
operações elemento-a-elemento colocando um ponto “.” antes da operação
desejada.
Aqui, temos as sintaxes análogas entre operações matriciais e operações
elemento-a-elemento:
+ adição .+ adição elemento-a-elemento
- subtração .- subtração elemento-a-elemento
* multiplicação .* multiplicação elemento-a-elemento
./ divisão elemento-a-elemento
^ potenciação .^ potenciação elemento-a-elemento
’ transposta conjugada .’ transposta (não conjugada)
Exemplo A.3.5. Veja as seguintes linhas de comando:
-->A = ones (2 ,2)
A =
1. 1.
1. 1.
-->B = 2 * ones (2 ,2)
B =
2. 2.
2. 2.
-->A * B
ans =
4. 4.
4. 4.
-->A .* B
ans =
2. 2.
2. 2.