Matlab - variable global sin declararla explicitamente

 
Vista:

variable global sin declararla explicitamente

Publicado por oscar (5 intervenciones) el 14/03/2012 02:22:33
Estoy trabajando con una GUI en matlab, en la que el usuario, escribe un nombre por ejemplo temperatura, P, X ...etc y esas seran variables que se usaran en el programa y que se operaran despues con ellas, en otras palabras, el usuario crea las variables, y pues no puedo ponerle una lista para que las escoja, él debe crearlas.

variables=get(handles.VAR,'String');
contador=get(handles.contavariable,'String');
contador=str2num(contador);

varnames = {variables};
values = contador;
eval([varnames '= ' num2str(contador) ';'])

algo asi es el codo que he estado usando, me funciona por el hecho de que crea la variable que el usuario tecleo, y le asigna el valor debido, pero lo por ser una GUI al terminar de ejecutar la funcion, se borra la variable. Si el usuario escribio perro y contador era 1, se asigna perro=1 ; pero una vez que queremos ingresar una segunda variable se borra la primera, y ese es mi gran dilema, porque el programa pretende operar con todas las variables que el usuario declaró.
He tratado de declararlas como globales, pero no se si exista algun modo de hacerlo sin declararlas explicitamente , algo asi ocmo : global varnames{1} (Ya lo intente y no me ha funcionado).
Alguna ídea para solucionarlo? o algun otro metodo para crear variables dentro del a ejecucion de una GUI y despues poder operarlas?
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 JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

variable global sin declararla explicitamente

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 16/03/2012 15:09:10
Hola Oscar.
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
function varargout = variables_leidas(varargin)
%%http://www.lawebdelprogramador.com/foros/Matlab/1318076-variable_global_sin_declararla_explicitamente.html
% Estoy trabajando con una GUI en matlab, en la que el usuario, 
% escribe un nombre por ejemplo temperatura, P, X ...etc y esas
%     seran variables que se usaran en el programa y que se
% operaran despues con ellas, en otras palabras, el usuario
% crea las variables, y pues no puedo ponerle una lista para
% que las escoja, él debe crearlas.
% 
% variables=get(handles.VAR,'String');
% contador=get(handles.contavariable,'String');
% contador=str2num(contador);
% 
% varnames = {variables};
% values = contador; 
% eval([varnames '= ' num2str(contador) ';'])
% 
% algo asi es el codo que he estado usando, me funciona por
% el hecho de que crea la variable que el usuario tecleo, 
% y le asigna el valor debido, pero lo por ser una GUI al
% terminar de ejecutar la funcion, se borra la variable.
% Si el usuario escribio perro y contador era 1, se asigna 
% perro=1 ; pero una vez que queremos ingresar una segunda
% variable se borra la primera, y ese es mi gran dilema,
% porque el programa pretende operar con todas las variables
% que el usuario declaró.
% He tratado de declararlas como globales, pero no se si
% exista algun modo de hacerlo sin declararlas explicitamente ,
% algo asi ocmo : global varnames{1} (Ya lo intente y no me ha
% funcionado).
% Alguna ídea para solucionarlo? o algun otro metodo para 
% crear variables dentro del a ejecucion de una GUI y despues
% poder operarlas?
 
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @variables_leidas_OpeningFcn, ...
                   'gui_OutputFcn',  @variables_leidas_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end
 
if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
 
function variables_leidas_OpeningFcn(hObject, eventdata, handles, varargin)
global i  variables
i=1;
variables={};
handles.output = hObject;
guidata(hObject, handles);
 
function varargout = variables_leidas_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
 
function VAR_Callback(hObject, eventdata, handles)
global i variables
variables{i}=get(handles.VAR,'String')
i=i+1;
 
function sumar_Callback(hObject, eventdata, handles)
global variables
suma=str2num(variables{1})+str2num(variables{2});
set(handles.sumar,'String',suma)



Saludos
JOSE JEREMIAS CABALLERO

Servicios de programacion matlab


Asesor de Proyectos con Matlab
programador en 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