c# math octave

Interfaz de octava con C#



math octave (5)

He desarrollado un programa en Octave al que me gustaría agregar una capa GUI. Quiero crear un programa ejecutable en C # que pueda distribuir, pero quiero mantener las construcciones de álgebra lineal de Octave sin tener que implementarlas por mi cuenta. Particularmente, quiero matrices básicas, operaciones vectoriales y funciones de optimización (como fminunc y fmincg ).

¿Cuál es la mejor manera de lograr esto? ¿Biblioteca apropiada de álgebra lineal C #, tal vez?


Hace poco necesitaba esta funcionalidad para mi proyecto de mascota y todas las soluciones existentes no eran fáciles de usar o simplemente no funcionaban. Creé una biblioteca estándar .NET de código abierto y multiplataforma para este único propósito. Espero que te guarde algunos dolores de cabeza - Octave.NET en GitHub


Hay muchas bibliotecas de matemáticas para c #. Math.NET Numerics parece ser una buena alternativa gratuita. También hay implementaciones comerciales.

Otra alternativa es llamar a Octave con Process.Start y analizar la salida. Esto le ahorra la posibilidad de volver a escribir sus cálculos, pero debe poder agrupar Octave con su aplicación. Si desea mezclar estrechamente c # y el código matemático, esto será bastante complicado, pero si su código matemático es un cálculo grande con un solo conjunto de entradas y un solo conjunto de salidas, podría ser una buena alternativa.



Para crear una versión independiente: http://www.gnu.org/software/octave/doc/interpreter/Standalone-Programs.html#Standalone-Programs

Tengo un problema similar, que es crear un .dll para C #. He estado buscando una manera de hacer esto por un tiempo, no he podido encontrar instrucciones o una forma fácil de hacerlo. Este es más un proyecto en curso que una pregunta, ¡pero definitivamente aceptaría cualquier respuesta o ayuda! :)

Estoy planeando hacer un seguimiento de mis esfuerzos aquí, por lo que al final esto debería convertirse en una página que permitirá a las personas encontrar la forma de compilar una octava en una .dll (siempre y cuando esto sea posible)

Asi que:

-Estoy usando VS2010

-Empecé con los binarios compilados de MS VS2010 para octava, asumiendo que esto será más cercano.

-He creado un proyecto en VS y utilicé el siguiente código:

#include <iostream> #include <octave/oct.h> #include <octave/octave.h> #include <octave/parse.h> int main(int argc, char* argv[]) { std::cout<<"hello world"<<std::endl; char a[900]; std::cin>>a; return 0; }

-El código por supuesto no encontraría las libs de octava, así que las agregué, por ejemplo,

C:/Octave/Octave-3.6.1-VS10/lib/octave/3.6.1;C:/Octave/Octave-3.6.1-VS10/include/octave-3.6.1;C:/Octave/Octave-3.6.1-VS10/include;$(VCInstallDir)include;...

Para incluir directorios (haga clic derecho en Proyecto -> Propiedades)

Ahora me sale

Error 73 error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall octave_value::~octave_value(void)" (__imp_??1octave_value@@QAE@XZ) referenced in function "public: void * __thiscall octave_value::`vector deleting destructor''(unsigned int)" (??_Eoctave_value@@QAEPAXI@Z) .../Projects/cppap32/cppap32/main.obj cppap32

lo que básicamente significa que no puede encontrar octave_value ... Al usar dumpbin.exe podemos ver que necesita tener tanto octave.lib Y octinterp.lib

Ahora compila .... :)

El siguiente paso es crear un .dll ...

Notas:

Para comprobar qué es exportado por un .lib:

dumpbin.exe /exports C:/Octave/Octave-3.6.1-VS10/lib/octave/3.6.1/octave.lib

Enlaces relevantes:

Preguntas abiertas similares en otro sitio: http://www.daniweb.com/software-development/cpp/threads/297336/gnu-octave-for-c-how-to-start


Tal vez puedas mirar el Xoctave. Esta es una GUI escrita para Octave. Aquí está el enlace: www.xoctave.com

Y tal vez los chicos allí podrían tener una solución para sus preguntas.