Matlab - Combinar simbólico con string en gui

 
Vista:
sin imagen de perfil

Combinar simbólico con string en gui

Publicado por Álvaro (32 intervenciones) el 26/12/2016 14:20:20
Buenas tardes, estoy realizando un programa de cálculo de estructuras mediante matlab y su gui, la idea es que el usuario introduzca en un edit text las variables y al pulsar un botón se inicie el cálculo de la estructura y esas variables introducidas las convierta a simbólicas para reconocer un vector de esfuerzos [F] y desplazamientos [U] que también haya introducido el usuario y así poder resolver ecuaciones matriciales, según la foto:

duda

Lo quiero hacer así porque en lenguaje simbólico no me da problemas si la matriz de rigidez [K] es singular como en el ejemplo, y me ahorro el tener que ir eliminando filas y columnas en otra función, pero por ahora no consigo que me transforme el string de F y U en sus sendos vectores columna, sólo me devuelve el string, a no ser que escriba manualmente en el cw las variables y los vectores F y U, lo cual es un poco arduo una y otra vez, me gustaría que lo hiciera de manera automática.

Sabéis si es posible hacer eso?

Muchas gracias, un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Royeth
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Combinar simbólico con string en gui

Publicado por Royeth (1818 intervenciones) el 26/12/2016 14:36:06
sí es posible porque Matlab no es un lenguaje compilado, para esto usa la función eval , que evalua el string como si lo ejecutaras en la ventana de comandos , así que obtene el string y luego haces eval

sería algo como

1
eval(get(handles.edit1,'String'))

aquí en la función donde colocas esto ya tus variables son reconocidas como simbólicas y puedes continuar el proceso

por otro más lado es mucho más rápido trabajar sin syms , así toque eliminar filas y columnas el programa será más eficiente

saludos
https://www.facebook.com/royethmatlab/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Combinar simbólico con string en gui

Publicado por Álvaro (32 intervenciones) el 26/12/2016 16:36:20
Muchísimas gracias por tu rápida respuesta, no conocía esa función, no me han enseñado absolutamente nada en la universidad, ni si quiera a estructurar un programa con funciones y me piden programar una herramienta de cálculo estructural v.v'
Me has resuelto la duda a la perfección. Ya me imagino que el programa calcula más rápido sin syms pero a la hora de ir seleccionando filas y columnas tenía que alargar mucho el código en la función de marras y me daba problemas si [K] es singular, prefiero que calcule unos segundos más a tirarme más tiempo programando que me urge mucho.

Soy nuevo en el foro así que no sé cómo van las valoraciones de respuesta, sólo me sale un 1 pero te daba un 11!

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Combinar simbólico con string en gui

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 26/12/2016 16:01:05
1
2
3
4
function edit1_Callback(hObject, eventdata, handles)
cadena= get(hObject,'String')
simbolica=sym(cadena)
whos cadena  simbolica

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
>> convertir_string_simbolico
 
cadena =
 
[Fx1; Fy1; 0; 1000; Fy2; 0;0; -2000; 0;Fx4;F]
 
 
simbolica =
 
   Fx1
   Fy1
     0
  1000
   Fy2
     0
     0
 -2000
     0
   Fx4
     F
 
  Name            Size            Bytes  Class    Attributes
 
  cadena          1x45               90  char
  simbolica      11x1               112  sym




Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programación matlab
[email protected]


http://matlabcaballero.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Combinar simbólico con string en gui

Publicado por Álvaro (32 intervenciones) el 26/12/2016 16:38:03
Gracias por tu aporte! Aunque tengo una duda, al hacerlo así los componentes 1000 y -2000 del vector F los tratará de manera simbólica en vez de como números?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Combinar simbólico con string en gui

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 26/12/2016 16:51:20
En la figura de tu guide que subes al foro, tu introduces un vector de esa forma y justamente por eso he puesto de esa manera , también puedes leer solo [Fx1; Fy1 Fy2; Fx4].

Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programación matlab
[email protected]


http://matlabcaballero.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Combinar simbólico con string en gui

Publicado por Álvaro (32 intervenciones) el 27/12/2016 12:03:27
Sólo quería que me reconociera las variables, pero gracias de todas formas!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar