Como alterar o número de linhas e colunas de uma matriz no Octave
Nesta explanação, vamos abordar como modificar o número de linhas e colunas de uma matriz no Octave, mantendo inalterado o número total de elementos.
Para ilustrar, vamos considerar um exemplo prático.
Inicialmente, criamos uma matriz retangular 3x2, composta por três linhas e duas colunas.
>> M = [ 1 2 ; 3 4 ; 5 6 ]
M =
1 2
3 4
5 6
Em seguida, vamos transformar a matriz 3x2 em uma matriz 2x3, que possui duas linhas e três colunas.
Para isso, basta digitar reshape(M,2,3)
>> reshape(M,2,3)
ans =
1 5 4
3 2 6
É possível também converter a matriz inicial em um vetor linha, utilizando o comando reshape(M,1,6)
>> reshape(M,1,6)
ans =
1 3 5 2 4 6
Ou, se preferir, em um vetor coluna, através do comando reshape(M,6,1)
>> reshape(M,6,1)
ans =
1
3
5
2
4
6
Em todas essas operações, o número de elementos permanece constante.
Vale ressaltar que um vetor é uma matriz específica com uma única linha 1x6 ou uma única coluna 6x1.
De maneira análoga, é possível transformar um vetor em uma matriz.
Por exemplo, vamos criar um vetor com oito elementos
>> v = [ 1 2 3 4 5 6 7 8 ]
v =
1 2 3 4 5 6 7 8
Podemos transformar este vetor em uma matriz 2x4, que possui duas linhas e quatro colunas, digitando reshape(v,2,4)
>> reshape(v, 2, 4)
ans =
1 3 5 7
2 4 6 8
Alternativamente, o vetor pode ser convertido em uma matriz 4x2, utilizando o comando reshape(v, 4, 2)
>> reshape(v, 4, 2)
ans =
1 5
2 6
3 7
4 8
Dessa forma, é possível converter um vetor em uma matriz e vice-versa, desde que o número de elementos seja mantido.
No entanto, se o número de elementos for diferente, o comando reshape() não será bem-sucedido.
Por exemplo, não é possível transformar uma matriz 4x2 em uma matriz 3x3, pois a primeira matriz contém oito elementos, enquanto a segunda possui nove.
Neste caso, o comando reshape() resultará em erro.
>> reshape(M,3,3)
error: reshape: can't reshape 3x2 array to 3x3 array