Interactuar con Matlab desde Vb.net

Hola, en esta nueva entrada vamos a mostrar cómo establecer conexión e interactuar con Matlab para la realización de operaciones matemáticas desde las más sencillas hasta las más avanzadas.

Por los que manejamos este grandioso lenguaje (Matlab) sabemos que es muy utilizado para realizar cálculos matemáticos complejos, especialmente en el tratamiento de los datos de forma matricial (lo cual constituye su funcionamiento en general); aunque Matlab es un lenguaje de programación muy útil y completo para algunos les resulta un poco tedioso o complicado usarlo, ya que muchas personas poseen pocos conocimientos en cuanto a la programación, lo mejor sería brindar una interfaz de usuario sencilla y amigable para trabajar, entonces porque no pensar en elaborar un diseño simple y fácil en Visual Basic .net que es un lenguaje muy amigable y sencillo aprovechando todo el poder y efectividad de Matlab para el procesamiento interno de los procesos a realizar. Bueno de esto es lo que trata este post amigos, ahora sin más preámbulos comencemos…

Inicialmente creamos un nuevo proyecto de vb.net y realizamos la siguiente interfaz:

Agregamos 2 textbox, 1 boton, 3 radiobutton y un label.

Bien ahora pasemos a la parte del código, creemos las siguientes variables


Dim Matlab As Object

Dim Result As String

Luego en el evento load del formulario colocamos lo siguiente:


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Matlab = CreateObject("Matlab.Application")    'creamos una instancia del programa matlab que debe de estar instalado en el pc

Result = Matlab.Execute("syms x")  'declaramos la variable simbolica x para trabajar funciones en el dominio de x

Matlab.Visible = 0       'lo que hace esta instruccion es ocultar la ventana de work de matlab

End Sub

Luego en el evento click del boton, colocamos lo siguiente:


If (Me.Radio_aritmetica.Checked = True) Then

Result = Matlab.Execute(Me.TextBox_entrada.Text)

Me.TextBox_salida.Text = Result

End If

lo que hacemos aqui es determinar si el radiobutton llamado Radio_aritmetica esta chequeado realizar operaciones comunes en matlat sin necesidad de usar alguna funcion especifica

If (Me.Radio_derivada.Checked = True) Then

Result = Matlab.Execute("diff(" & Me.TextBox_entrada.Text & ")")

Me.TextBox_salida.Text = Result

End If

lo que hacemos aqui es determinar si el radiobutton llamado Radio_derivada esta checkeado se incluye la funcion diff que es la encargada de derivar alguna expresion, cuya funcion debe ir dentro de ella

If (Me.Radio_integral.Checked = True) Then

Result = Matlab.Execute("int(" & Me.TextBox_entrada.Text & ")")

Me.TextBox_salida.Text = Result

End If

lo que hacemos aqui es determinar si el radiobutton Radio_integral esta checkeado y si es asi, incluimos la funcion int de matlab que es la encargada de integrar la funcion o expresion que se le este pasando como parametro (que corresponde a lo escrito en el textbox)

por ultimo en el evento form_closing del formulario cerramos matlab, esto lo hacemos de la siguiente forma:


Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing

Matlab.Quit()

End Sub

a continuacion se observaran algunas imagenes con el programa en ejecucion:
1) Realizando Operaciones aritmeticas:

trabajando con variabes(solo trabajaremos con la variable x ya que es la unica que declaramos):

2) Realizando una derivada:

3) ahora veamos la realizacion de una derivada:

Bueno eso es todo por ahora, solo falta aplicarle un poco de imaginacion a esta aplicacion y volverla un poco mas atractiva realizando otras operaciones adicionales.
espero y este post le haya sido de utilidad.

Descargar Aplicacion

Anuncios

7 respuestas a “Interactuar con Matlab desde Vb.net

    • Hola, el codigo en c# seria el siguiente:

      using System;
      using System.Collections.Generic;
      using System.ComponentModel;
      using System.Data;
      using System.Drawing;
      using System.Linq;
      using System.Text;
      using System.Windows.Forms;
      
      
      using Microsoft.VisualBasic;
      using System.Collections;
      
      using System.Diagnostics;
      
      namespace WindowsFormsApplication1
      {
          public partial class Form1 : Form
          {
              public Form1()
              {
                  InitializeComponent();
              }
      
              object Matlab;
              string Result;
      
              private void Form1_Load(object sender, EventArgs e)
              {
                  Matlab = Interaction.CreateObject("Matlab.Application");
                  Result = Matlab.Execute("syms x");
                  Matlab.Visible = 0;
      
              }
      
              private void Button_realizar_Click(object sender, EventArgs e)
              {
                  if ((this.Radio_aritmetica.Checked == true))
                  {
                      Result = Matlab.Execute(this.TextBox_entrada.Text);
                      this.TextBox_salida.Text = Result;
                  }
      
                  if ((this.Radio_derivada.Checked == true))
                  {
                      Result = Matlab.Execute("diff(" + this.TextBox_entrada.Text + ")");
                      this.TextBox_salida.Text = Result;
                  }
      
                  if ((this.Radio_integral.Checked == true))
                  {
                      Result = Matlab.Execute("int(" + this.TextBox_entrada.Text + ")");
                      this.TextBox_salida.Text = Result;
                  }
              }
      
              private void Form1_FormClosing(object sender, FormClosingEventArgs e)
              {
                  Matlab.Quit();
              }
          }
      }
      
      

      Cuando necesites convertir codigo fuente de c# a vb.net o viceversa usa los siguientes convertidores de codigo online:Convertidor de Developer Fusion o Convertidor de Codigo de Telerik

  1. Muchas gracias pero ahora si no es mucha molestia como agrego una referencia desde matlab ya logré crear la carpeta en donde contiene las clases para .Net ya agregué la referencia desde c# pero no puedo acceder a la función hecha en matlab cree un objeto de tipo coneccion pero nada como sería el codigo por favor.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using Yaretzi; //Coneccion
    using System.Reflection;

    namespace Coneccion
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    Yaretzi.Yaretziclass y = new Yaretzi.Yaretziclass();
    static Type tipoMatlab = Type.GetTypeFromProgID(“matlab.application”);
    Object objetoMathlab = Activator.CreateInstance(tipoMatlab);
    private void button1_Click(object sender, EventArgs e)
    {
    object[] funcion = new object[] {“pame()”};
    Object resul=tipoMatlab.InvokeMember(“execute”,BindingFlags.InvokeMethod,null,objetoMathlab,funcion);
    listBox1.Text = resul.ToString();
    }
    }
    }

  2. En la linea 30 del codigo al final tienes “Matlab = Interaction.CreateObject(“Matlab.Application”);”.
    Interaction donde se hace la instancia de este objeto

  3. doc cuando hago esta operación aritmetica no me funciona a q se debe??? (2 * a^3 – 39 * a^2 +15* a^4 -16 * a +10) /(2 – 4 * a – 5* a^2)

    • se debe a que debes expresar la ecuacion en terminos de la variable x y no de “a” ya que en el codigo fuente estoy declarando como variable simbolica solamente a “x”, has el cambio de variable y te debera funcionar

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s