Matlab - switch PopUpMenu

 
Vista:
sin imagen de perfil

switch PopUpMenu

Publicado por Meri (4 intervenciones) el 22/12/2017 11:11:59
Tengo un problema con el cambio de Data en el popupmenu

El botón lo quiero utilizar para mostrar dos gráficos según la opción seleccionada (HVAC/HVDC)

Las dos funciones se han escrito en el opening function y las muestro por si es de ayuda.

En el callback del popupmenu es donde tengo el problema. Al cambiar de uno a otro no cambia la función mostrada. No se qué estoy haciendo mal.

Gracias por vuestra ayuda!


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
function Comparacio_OpeningFcn(hObject, eventdata, handles, varargin)
%dataset 1
x=0:1:500;
Ptransfercomp = sqrt(max(0, (((6*188.6203)^2)-((0.5*7.8441*x).^2))));
Plost = max(0, -(Ptransfercomp-0.4*1000));
HVAC=[];
for i=1:size(x,2)
    if x(i)<269.9299
        HVAC(i) = 164.4169+x(i)*7.5310+4.4795*(1e-06)*(x(i)^3)+(Plost(i)*8765.81*100*20)/1000000;
    elseif x(i)>269.9299
        HVAC(i) = 164.4169+x(i)*7.5310+4.4795*(1e-06)*(269.9299^3)+(Plost(i)*8765.81*100*20)/1000000;
    end
end
plot(x',HVAC','o')
handles.HVAC = HVAC;
%dataset 2
x=0:1:500;
HVDC=[];
for i=1:size(x,2)
    HVDC(i) = 544.4912+(1.4764*x(i));
end
plot(x',HVDC','o')
handles.HVDC = HVDC;
 
handles.currentData = handles.HVDC;
handles.currentData = handles.HVAC;



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function PopUpMenu_Callback(hObject, eventdata, handles)
% hObject    handle to PopUpMenu (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
str = get(hObject, 'String');
val = get(hObject, 'Value');
 
switch str(val)
    case 'HVAC'
        handles.currentData = handles.HVAC;
        set(handles.HVAC);
    case 'HVDC'
       handles.currentData = handles.HVDC;
       set(handles.HVDC);
end
 
%save handles structure
guidata(hObject, handles);
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

switch PopUpMenu

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 23/12/2017 22:48:23
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
function varargout = switch_popupmenu(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @switch_popupmenu_OpeningFcn, ...
                   'gui_OutputFcn',  @switch_popupmenu_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 switch_popupmenu_OpeningFcn(hObject, eventdata, handles, varargin)
opciones={'HVAC';'HVDC'};
set(handles.popupmenu1,'string',opciones)
%dataset 1
x=0:1:500;
Ptransfercomp = sqrt(max(0, (((6*188.6203)^2)-((0.5*7.8441*x).^2))));
Plost = max(0, -(Ptransfercomp-0.4*1000));
HVAC=[];
for i=1:size(x,2)
    if x(i)<269.9299
        HVAC(i) = 164.4169+x(i)*7.5310+4.4795*(1e-06)*(x(i)^3)+(Plost(i)*8765.81*100*20)/1000000;
    elseif x(i)>269.9299
        HVAC(i) = 164.4169+x(i)*7.5310+4.4795*(1e-06)*(269.9299^3)+(Plost(i)*8765.81*100*20)/1000000;
    end
end
plot(x',HVAC','o')
handles.HVAC = HVAC;
%dataset 2
x=0:1:500;
HVDC=[];
for i=1:size(x,2)
    HVDC(i) = 544.4912+(1.4764*x(i));
end
plot(x',HVDC','o')
handles.HVDC = HVDC;
 
handles.currentData = handles.HVDC;
handles.currentData = handles.HVAC;
handles.output = hObject;
 
guidata(hObject, handles);
 
function varargout = switch_popupmenu_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
 
function popupmenu1_Callback(hObject, eventdata, handles)
str = get(hObject, 'String');
val = get(hObject, 'Value');
switch str{val}
    case 'HVAC'
        'HVAC'
%         handles.currentData = handles.HVAC;
%         set(handles.HVAC);
    case 'HVDC'
%        handles.currentData = handles.HVDC;
%        set(handles.HVDC);
'HVDC'
end
guidata(hObject, handles);


1
2
3
4
5
>> switch_popupmenu
ans =
HVDC
ans =
HVAC

Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero
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

matlab pupupmenu

Publicado por meri (4 intervenciones) el 24/12/2017 21:07:12
sigue sin funcionarme.He seguido tus indicaciones (solo cambiando que mi función se llama Comparacio y el tag del popupmenu es PopUpMenu). Me da los errores siguientes:


Undefined function or variable 'figure1_CreateFcn'.

Error in gui_mainfcn (line 95)
feval(varargin{:});

Error in Comparacio (line 18)
gui_mainfcn(gui_State, varargin{:});

Error in
matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)Comparacio('figure1_CreateFcn',hObject,eventdata,guidata(hObject))
Undefined function or variable 'PopUpMenu_CreateFcn'.

Error in gui_mainfcn (line 95)
feval(varargin{:});

Error in Comparacio (line 18)
gui_mainfcn(gui_State, varargin{:});

Error in
matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)Comparacio('PopUpMenu_CreateFcn',hObject,eventdata,guidata(hObject))
Undefined function or variable 'text2_CreateFcn'.

Error in gui_mainfcn (line 95)
feval(varargin{:});

Error in Comparacio (line 18)
gui_mainfcn(gui_State, varargin{:});

Error in
matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)Comparacio('text2_CreateFcn',hObject,eventdata,guidata(hObject))
Undefined function or variable 'axes2_CreateFcn'.

Error in gui_mainfcn (line 95)
feval(varargin{:});

Error in Comparacio (line 18)
gui_mainfcn(gui_State, varargin{:});

Error in
matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)Comparacio('axes2_CreateFcn',hObject,eventdata,guidata(hObject))
>>



si pudieras ayudarme con esto te lo agradecería muchísimo!
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

matlab pupupmenu

Publicado por Meri (4 intervenciones) el 26/12/2017 16:40:16
muchísimas gracias. Aquí está la carpeta
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

matlab pupupmenu

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 26/12/2017 17:12:24
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
function varargout = Comparacio(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @Comparacio_OpeningFcn, ...
                   'gui_OutputFcn',  @Comparacio_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 Comparacio_OpeningFcn(hObject, eventdata, handles, varargin)
opciones = {'HVAC';'HVDC'};
set(handles.PopUpMenu,'string',opciones)
x=0:1:500;
HVDC=[];
for i=1:size(x,2)
    HVDC(i) = 544.4912+(1.4764*x(i));
end
plot(x',HVDC','o')
handles.HVDC = HVDC;
%dataset 1
x=0:1:500;
Ptransfercomp = sqrt(max(0, (((6*188.6203)^2)-((0.5*7.8441*x).^2))));
Plost = max(0, -(Ptransfercomp-0.4*1000));
HVAC=[];
for i=1:size(x,2)
    if x(i)<269.9299
        HVAC(i) = 164.4169+x(i)*7.5310+4.4795*(1e-06)*(x(i)^3)+(Plost(i)*8765.81*100*20)/1000000;
    elseif x(i)>269.9299
  HVAC(i) = 164.4169+x(i)*7.5310+4.4795*(1e-06)*(269.9299^3)+(Plost(i)*8765.81*100*20)/1000000;
    end
end
handles.x=x;
handles.HVAC = HVAC;
handles.output = hObject;
guidata(hObject, handles);
 
 
function varargout = Comparacio_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
 
function PopUpMenu_Callback(hObject, eventdata, handles)
str = get(hObject, 'String');
val = get(hObject, 'Value');
 x=handles.x;
 HVAC = handles.HVAC;
   HVDC=handles.HVDC  ;
switch str{val}
    case 'HVAC'
        plot(x',HVAC','o')
    case 'HVDC'
       plot(x',HVDC','o')
end
guidata(hObject, handles)


Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero
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

matlab pupupmenu

Publicado por Meri (4 intervenciones) el 26/12/2017 18:08:05
Ahora si!!!!! mil gracias

ha quedado muy bien

te recomendaré siempre que pueda


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