A.5 Matrizes
No GNU Octave, 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
GNU Octave é definida usando-se a seguinte sintaxe:
A = [ a11 , a12 , ... , a1n ; ...; am1 , am2 , ... , amn ]
Exemplo A.5.1. Defina a matriz:
Solução. No GNU Octave, 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.5.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.5.2. Veja as seguintes linhas de comando:
>> u = 2:6
u =
2 3 4 5 6
>> v = 10:-2:3
v =
10 8 6 4
A.5.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)
nl = 3
nc = 2
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.5.3. Veja as seguintes linhas de comando:
>> A = rand(3,4)
A =
0.356041 0.896038 0.761722 0.447774
0.453682 0.071638 0.029215 0.500115
0.885188 0.387276 0.566189 0.683588
>> A
A =
0.356041 0.896038 0.761722 0.447774
0.453682 0.071638 0.029215 0.500115
0.885188 0.387276 0.566189 0.683588
>> A(2,3)
ans = 0.029215
>> A(2:3,2:4)
ans =
0.071638 0.029215 0.500115
0.387276 0.566189 0.683588
Definida uma matriz
no GNU Octave, 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,end) o elemento da i-ésima linha e da última coluna
A(end,j) o elemento da última linha e da j-ésima coluna
Exemplo A.5.4. Veja as seguintes linhas de comando:
>> B = rand(4,4)
B =
0.246251 0.931915 0.094609 0.519181
0.926740 0.898039 0.377078 0.260630
0.133661 0.652755 0.670097 0.390773
0.379430 0.314611 0.829729 0.484622
>> aux=B(:,2); B(:,2)=B(:,3); B(:,3)=aux
B =
0.246251 0.094609 0.931915 0.519181
0.926740 0.377078 0.898039 0.260630
0.133661 0.670097 0.652755 0.390773
0.379430 0.829729 0.314611 0.484622
A.5.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 GNU Octave, 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.5.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