
Devoluciones de llamada entre variables y Botones, Guidata
Publicado por Carlos Daniel Ortiz (1 intervención) el 06/06/2021 22:26:48
Buen día para todos, estoy realizando un programa para graficar, y se me ocurrió un campo de Gráfica Animada, pero quiero que grafique Coseno cuando presione el botón, y que se detenga la grafica, cuando presiones el botón stop, pero no lo he conseguido, intenté con guidata, pero no se porque no me funciona.
Así el código como esta, correría si tuvieramos valores en ValorCos=1 y en valor=0, queriendo decir que se ejecute con coseno, pero me da error
Muchas Gracias, quedo atento a cualquier ayuda.
Así el código como esta, correría si tuvieramos valores en ValorCos=1 y en valor=0, queriendo decir que se ejecute con coseno, pero me da error
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
71
72
73
74
75
76
77
78
%---------------GRAFICA CON ANIMACION----------------------------------
% ---------Presion de Boton Coseno-----------------
function BotonCoseno_Anim_Callback(hObject, eventdata, handles)
handles.valorCos=get(hObject, 'Value');
valorCos=[handles.valorCos]
guidata(hObject, handles)
% --------Boton para detener la Grafica--------------------
function stop_Callback(hObject, eventdata, handles)
handles.valor=get(hObject, 'Value');
valor=[handles.valor];
guidata(hObject, handles)
% --------Botón de Graficar Animada------------
function graficar_Anim_Callback(hObject, eventdata, handles)
valor=handles.valor;
valorCos=handles.valorCos;
if valor == 1
parar=true;
else
parar=false;
end
if valorCos == 1
FCos=true;
else
FCos=false;
end
set(get(handles.axes1,'Xlabel'),'String','Tiempo (Segundos)')
set(get(handles.axes1,'Ylabel'),'String','Funcion')
linea1=line('parent', handles.axes1,'xdata',[],'ydata',[],'color','r','LineWidth',2.5);
linea2=line('parent', handles.axes1,'xdata',[],'ydata',[],'color','k','LineWidth',2);
%%funcion GRAFICAR
tiempo=(0);
salida=(0);
salida2=(0);
%Cada cuanto se va graficando el axe
dt=0.1;
%LIMITES INICIALES
limx=[0 40];
limy=[-3 3];
set(handles.axes1,'xlim',limx,'ylim',limy);
%%Grafico
k=1;nit=800;
while(~parar)
y=2*sin(tiempo(k));
z=cos(4*tiempo(k));
if FCos == true
set(handles.BotonCoseno_Anim,'string',z);
end
set(handles.FuncionSeno_Anim,'string',y);
%Actualiza las variables del GRAFICO
tiempo=[tiempo tiempo(end)+dt];
salida = [salida y];
salida2 = [salida2 z];
%Grafico de las lineas
set(linea1,'xdata',tiempo,'ydata',salida);
pause(0.1);
if FCos == true
set(linea2,'xdata',tiempo,'ydata',salida2);
end
if tiempo(end)>=limx
limx=[0 limx(2)+40]
set(handles.axes1,'xlim',limx)
end
k=k+1;
if(k==nit)
parar=true;
end
end
Muchas Gracias, quedo atento a cualquier ayuda.
Valora esta pregunta


0