Autor Tema: VB call MATLAB function???  (Leído 9718 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado chyun3

  • PIC10
  • *
  • Mensajes: 2
VB call MATLAB function???
« en: 06 de Julio de 2006, 14:26:03 »
Is is possible for Vb to call MATLAB function...or Matlab call VB function..

I want to perform image recognition using Matlab..then the result will esport to VB to perform other control....is it possible??

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: VB call MATLAB function???
« Respuesta #1 en: 06 de Julio de 2006, 14:58:32 »
Hola:

es la segunda ves de un post asi, no es que me moleste, pero si te das cuenta, este es un foro en español, asi que almenos en lo baaaaaaaaaasta que es la red busca un traductor y pon tus posts en español, aqui no todos sabemos ingles.  :mrgreen:

Desconectado eldavids

  • PIC10
  • *
  • Mensajes: 24
Re: VB call MATLAB function???
« Respuesta #2 en: 26 de Julio de 2006, 13:06:17 »
Si es posible el llamado de MATLAB desde visual basic, pero el llamado de MATLAB a visual no lo se.

Lo que yo he logrado es llamar un GUI hecho en MATLAB.

y LordLafebre tiene razon en spanish please
Si no entiendes una cosa y preguntas seras tonto durante 5 minutos, pero si no preguntas seras tonto durante toda la vida.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: VB call MATLAB function???
« Respuesta #3 en: 26 de Julio de 2006, 13:29:28 »
eldavids te importaría dar un poco más de detalle sobre como lo hiciste?

Desconectado eldavids

  • PIC10
  • *
  • Mensajes: 24
Re: VB call MATLAB function???
« Respuesta #4 en: 27 de Julio de 2006, 16:36:11 »
Dim Matlab As Object                                                                                             //Crea la variable Object "Matlab"

Set Matlab = CreateObject("Matlab.Application")                                                      //Crea el objeto matlab

Matlab.Execute ("syms S;")                                                                                   //Abres la aplicacion, en mi caso un GUI

*****************************************************************************
Vari = "ilaplace(" + TxtNumerador.Text + "/(" + TxtComunDivisor.Text + "))"
TxtSol.Text = Matlab.Execute(Vari)                                                                       //ejecuta la transformada inversa de laplace.

esto ultimo solo lo probe una vez, ya que en mi aplicacion solo me bastaba llamar al GUI y el resto de la aplicion se realizaba con el GUI.
Si no entiendes una cosa y preguntas seras tonto durante 5 minutos, pero si no preguntas seras tonto durante toda la vida.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: VB call MATLAB function???
« Respuesta #5 en: 27 de Julio de 2006, 20:28:44 »
Un GUI puede hacerse a partir de un .m corriente y moliente?

Desconectado eldavids

  • PIC10
  • *
  • Mensajes: 24
Re: VB call MATLAB function???
« Respuesta #6 en: 30 de Julio de 2006, 01:31:15 »
claro que si, solo debes utilizar los comandos que tiene matlab, para hacer los comandos(Botones, slider, texbox).
Si no entiendes una cosa y preguntas seras tonto durante 5 minutos, pero si no preguntas seras tonto durante toda la vida.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: VB call MATLAB function???
« Respuesta #7 en: 02 de Agosto de 2006, 15:05:43 »
Probé a hacerlo como tú dices pero no consigo más que se abra matlab momentáneamente pare cerrarse de nuevo al poco tiempo.
Mi GUI se llama gui.fig y lo hice así:

Matlab.Execute ("gui.fig")     

¿Estoy haciendo algo mal? 


Desconectado eldavids

  • PIC10
  • *
  • Mensajes: 24
Re: VB call MATLAB function???
« Respuesta #8 en: 08 de Agosto de 2006, 19:51:42 »
Modulay...........tendras que darme tiempo a buscar el programa donde lo hice.....eso fue hace mucho tiempo y recuerdo que tambin tenia el mismo problema que tu.

creo que lo que hay que hacer es pasarle el control a matlab, por que  sino, como el control lo tiene visual basic, cierra el GUI al poco tiempo de abrirlo
Si no entiendes una cosa y preguntas seras tonto durante 5 minutos, pero si no preguntas seras tonto durante toda la vida.

Desconectado micro_mon

  • PIC10
  • *
  • Mensajes: 29
Re: VB call MATLAB function???
« Respuesta #9 en: 21 de Septiembre de 2006, 22:57:41 »
mmm... acerca de enlazar visualbasic con matlab....

alguien sabe como hacer que la aplicacion hecha en matlab al ejecutarse quede insertada en el formulario de visualbasic??? y no flotando como otra ventana??

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: VB call MATLAB function???
« Respuesta #10 en: 23 de Septiembre de 2006, 02:16:33 »
Al menos conseguiste que te rule la aplicación,aunque sea flotante...yo ni eso :(

Desconectado micro_mon

  • PIC10
  • *
  • Mensajes: 29
Re: VB call MATLAB function???
« Respuesta #11 en: 24 de Septiembre de 2006, 13:05:33 »
Ahora que recuerdo...cuando hice los primeros intentos de enlazar matlab con visual Basic las ventanas de Matlab se cerraban automaticamente, pero eso se debia a que tenia errores de sintaxis en mi codigo de Matlab que queria ejecutar desde VB o que estaba cometiendo errores de compatibilidad al traspasar variables desde visual basic al workspace de matlab (relacionados al "tipo de variable (integer, double, etc)")

a mi me funcionó bien el siguiente codigo que captura los datos de un grid, lo pone en un vector y lo grafica con los comandos de matlab. El codigo original lo encontre en una web (no recuerdo el sitio....) pero es casi lo mismo.

cuando lo ejecuto aparecen 2 ventanas flotantes de matlab: una de una consola de comandos y la otra de la grafica en sí, lo que quisiera es que la ventana de graficos aparesca insertada en mi formulario de VB y la consola de comandos en lo posible que sea invisible......

Dim MatLab As Object

Private Sub Command12_Click()

Dim Result As String
Dim vector_f() As Double
ReDim vector_f(Val(Combo1.Text))

' capturando datos de un vsflexgrid

For i_captura = 1 To CDbl(Combo1.Text)
    vector_f(i_captura) = CDbl(VSFlexGrid2.TextMatrix(i_captura, 1))
Next i_captura
Set MatLab = CreateObject("Matlab.Application")


'Ejecucion de conmandos MATLAB

Call MatLab.Putworkspacedata("a", "base", vector_f) ' aqui se traspasa la variable
Result = MatLab.Execute("plot(a)")
Result = MatLab.Execute("whitebg('k')")
Result = MatLab.Execute("axis('auto')")

End Sub


 

anything