¿Cómo ingreso matrices en una función linspace en C++?
Descargo de responsabilidad: esto no es mi especialidad.
Estoy tratando de alimentar dos matrices de 3 columnas y 1 fila diferentes en una función linspace usando el paquete NumCPP, pero me están apareciendo errores como:
“ninguna instancia de la plantilla de función ‘nc::linspace’ coincide con la lista de argumentos. Los tipos de argumentos son: (float, float, int)” <– desde el vscode intelisense y “error: no se puede convertir ‘float’ a ‘float **'” cuando se ejecuta en la terminal.
El código relacionado con este error es el siguiente:
float ** XYZ [3];
float ** function(float array_A, float array_B, int C) {
XYZ ** = nc :: linspace & amp; lt; float ** & amp; gt;(array_A, array_B, C);
return XYZ;
};
Hacia el final de mi código en la función principal, defino estos parámetros como:
float array_A [3] = {0,0,0};
float array_B [3] = {0,PI/4,0};
int C = 10000;
Hice lo mismo con Python usando la función linspace de numpy y no tuve problemas. C++ es difícil, así que cualquier ayuda es apreciada.
davy.ai
El problema aquí radica en el uso de punteros en la definición de la función. La variable
float** XYZ[3]
es una matriz de 3 elementos de punteros flotantes, y su uso enXYZ** = nc::linspace<float**>(array_A, array_B, C)
es incorrecto.Para solucionar esto, puede modificar la función de la siguiente manera:
Aquí, estamos usando
std::vector
para representar las matrices en lugar de punteros. La funciónnc::linspace
se llama con el parámetro de plantilla<><float>>
para crear un vector deC
puntos igualmente espaciados entrearray_A
yarray_B
.La función modificada toma dos argumentos
std::vector<float>
en lugar de punteros, y devuelve un vector de vectores.std::vector
es una alternativa más segura y más flexible a las matrices de estilo C, y se puede cambiar de tamaño y modificar fácilmente.En la función principal, puede llamar a
function
de esta manera:Esto debería resolver los errores que estaba encontrando.</float**>