¿Cómo puede ser una matriz de doble (1D) almacenados usando tampón de protocolo? ¿Qué hay de las matrices densas multidimensionales (2D o 3D)?de protocolo - almacenar una doble matriz, 1D, 2D y 3D
Respuesta
Una matriz de doble sería mejor almacenado a través de
repeated double foo = 5 [packed=true];
repeated
hace actuar como una lista, que permite que varios artículos; packed
evita un encabezado por artículo.
No hay soporte directo para las matrices rectangulares (o superior) en protobuf. El más cercano es almacenar algo como:
esto es ampliamente similar a una matriz escalonada, pero con un elemento entre cada nivel.
Por favor, traduce "ampliamente similar a una matriz dentada" a más programación en inglés? – osgx
@osgx en lugar de una "matriz de matrices", sería más como una "matriz de objetos, cada uno de los cuales * tiene * una matriz", ¿es mejor? –
sí. ¿Debo guardar tamaños de arreglo en un campo adicional? – osgx
Uno podría simplemente imitar el diseño de memoria C/C++:
message DoubleMatrix {
required uint32 rows = 1;
required uint32 cols = 2;
repeated double data = 3 [packed=true];
}
Para acceder a los datos, utilice data[i*cols+j]
(fila-mayor), o data[i+rows*j]
(columna-major). Para matrices cuadradas sólo una de rows
/cols
tiene que ser almacenado. Técnicamente, incluso en el caso rectangular protobuf sabrá la longitud de los datos, y el otro valor se puede derivar.
Para facilitar su uso uno probablemente envolver la matriz en C++ con una clase de adaptador que permite el acceso a través de double MatrixAdapter::get(int row, int col)
; también podría verificar data_size()==rows()*cols()
.
- 1. Asignar una matriz 2D a una matriz 1D
- 2. representación de una matriz 2D como una matriz 1D
- 3. Convierte una matriz 2D en una matriz de 1D
- 4. Cómo aplanar matriz 2D a matriz 1D?
- 5. Convertir una matriz 1D en una matriz 2D en numpy
- 6. Producir matriz 2D de una matriz 1D en MATLAB
- 7. C++ En representación de una matriz 3D en una matriz de 1D
- 8. ¿Cómo hacer una matriz nubosa 2d una matriz 3d?
- 9. 2D FFT usando 1D FFT
- 10. Cómo copiar una fila de valores de una matriz 2D a una matriz 1D?
- 11. eficiente gama de construcción Numpy 2D de la matriz 1D
- 12. Matriz de proyección 3d a 2d
- 13. Cómo asignar una dimensión de una matriz 2D a una nueva matriz 1d en VBA
- 14. Implementación de una matriz, que es más eficiente: ¿se usa una matriz de matrices (2D) o una matriz 1D?
- 15. Contruir matriz 3D en numpy desde la matriz 2d existente
- 16. Dibujo 3D de lienzo utilizando contexto 2D y 3D
- 17. serie de división 2D de matriz 3D en numpy
- 18. Convertir el índice de matriz 1D en el índice de matriz 2D
- 19. Construir una matriz 3D en Rcpp
- 20. ¿Cómo "aplanar" o "indexar" 3D-array en 1D array?
- 21. Hashing 2D, 3D y nD vectores
- 22. Movimiento de 2D a 3D
- 23. Cálculo de una matriz de transformación 2D a partir de una matriz 2D inicial y resultante
- 24. camino más corto para emitir una matriz 2D int en 2d doble
- 25. Transponer una matriz 2D
- 26. ¿Es "2D fft" lo mismo que dos 1D fft?
- 27. Convierta una lista de matrices numpy 2D en una matriz numpy 3D?
- 28. asignación/desasignación dinámica de matrices en 2D y 3D
- 29. opengl nube de puntos 3D render de x, y, z matriz de 2d
- 30. inicializar una Mat OpenCV con una matriz 2D
posible duplicado de [Usando ProtoBuf-Net, cómo (de) serializar una matriz multidimensional?] (Http://stackoverflow.com/questions/4090173/using-protobuf-net-how-to-deserialize- una matriz multidimensional) –
b1nary.atr0phy, esta pregunta tiene solución para matrices 1D; esta pregunta también sobre C/C++, no sobre .NET. Si registramos mi pregunta como duplicada, ¿se fusionarán las respuestas? – osgx