Vector a matriz en octava

¿Cuál es la operación inversa de vec en octava?

Por ejemplo, si necesito convertir un vector de 12x1 en una matriz de 3x4, ¿qué debo hacer?

preguntado el 03 de mayo de 12 a las 14:05

1 Respuestas

No sé Octave, pero creo que estás buscando reshape.

— Función incorporada: remodelar (A, m, n,...)
— Función incorporada: remodelar (A, [m...])
— Función incorporada: remodelar (UN, ..., []...)
— Función incorporada: remodelar (Un tamaño)

Devuelve una matriz con las dimensiones especificadas (m, n, ...) cuyos elementos se toman de la matriz A. Se accede a los elementos de la matriz en orden de columna principal (como se almacenan las matrices de Fortran).

El siguiente código muestra la remodelación de un vector de fila de 1x4 en una matriz cuadrada de 2x2.

      reshape ([1, 2, 3, 4], 2, 2)
           ⇒  1  3
               2  4

Tenga en cuenta que el número total de elementos en la matriz original (prod (size (A))) debe coincidir con el número total de elementos en la nueva matriz (prod ([m...])).

Una sola dimensión de la matriz de retorno puede dejarse sin especificar y Octave determinará su tamaño automáticamente. Se utiliza una matriz vacía ([]) para marcar la dimensión no especificada.

Respondido 04 Abr '18, 14:04

The elements of the matrix are accessed in column-major order (like Fortran arrays are stored). ¿Qué pasa si necesito que los valores se coloquen en orden de fila principal? - Andre

@Andre: colóquelos primero en orden de columna principal, luego transponga la matriz (usando el operador de postfijo .'). No puede realizar esta operación sin copiar los datos. - crisluengo

@andre Esto funciona en Matlab, también debería funcionar en Octave. - guiño

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.