Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

App GUIDE con parámetros para visualizar trazados

En este ejemplo se muestra cómo examinar y ejecutar una aplicación GUIDE Precompilando. La aplicación contiene tres campos de edición y dos ejes. Los ejes muestran las representaciones de la frecuencia y del dominio de tiempo de una función que es la suma de dos ondas sinusoidales. Los dos campos de edición principales contienen la frecuencia para cada onda sinusoidal de componente. El tercer campo de edición contiene el intervalo de tiempo y la frecuencia de muestreo de las parcelas.

Abra y ejecute el ejemplo

Abra y ejecute la aplicación. Cambie los valores predeterminados en los campos y para cambiar la frecuencia de cada onda sinusoidal de componente.f1f2 También puede cambiar los tres números (separados por dos puntos) en el campo.t El primer y el último número especifican la ventana de tiempo para muestrear la función. El número intermedio especifica la velocidad de muestreo.

Pulse el botón para ver el gráfico de la función en los dominios de frecuencia y tiempo.Plot

Examine el código

  1. En GUIDE, haga clic en el botónEditor para ver el código.

  2. Cerca de la parte superior de la ventana del editor, utilice el Go To botón para navegar a las funciones que se describen a continuación.

Yf1_input_Callbackf2_input_Callback

La función se ejecuta cuando el usuario cambia el valor en el campo de edición.f1_input_Callbackf1 La función responde a los cambios en el campo y es casi idéntica a la función.f2_input_Callbackf2f1_input_Callback Ambas funciones buscan una entrada de usuario válida. Si el valor del campo de edición no es válido, el botón está desactivado.Plot Aquí está el código para la función.f1_input_Callback

f1 = str2double(get(hObject,'String')); if isnan(f1) || ~isreal(f1)     % Disable the Plot button and change its string to say why     set(handles.plot_button,'String','Cannot plot f1');     set(handles.plot_button,'Enable','off');     % Give the edit text box focus so user can correct the error     uicontrol(hObject); else      % Enable the Plot button with its original name     set(handles.plot_button,'String','Plot');     set(handles.plot_button,'Enable','on'); end

t_input_Callback

La función se ejecuta cuando el usuario cambia el valor en el campo de edición.t_input_Callbackt Este bloque comprueba el valor para asegurarse de que es numérico, que su longitud está entre 2 y 1000, y que el vector está aumentando monótona. El bloque cambia la etiqueta en el botón para indicar que un valor de entrada no es válido.try

try     t = eval(get(handles.t_input,'String'));     if ~isnumeric(t)         % t is not a number         set(handles.plot_button,'String','t is not numeric')     elseif length(t) < 2         % t is not a vector         set(handles.plot_button,'String','t must be vector')     elseif length(t) > 1000         % t is too long a vector to plot clearly         set(handles.plot_button,'String','t is too long')     elseif min(diff(t)) < 0         % t is not monotonically increasing         set(handles.plot_button,'String','t must increase')     else         % Enable the Plot button with its original name         set(handles.plot_button,'String','Plot')         set(handles.plot_button,'Enable','on')         return     end   catch EM     % Cannot evaluate expression user typed     set(handles.plot_button,'String','Cannot plot t');     uicontrol(hObject); end
catchPlot El comando establece el foco en el campo que contiene el valor erróneo.uicontrol

plot_button_Callback

La función se ejecuta cuando el usuario hace clic en el botón.plot_button_CallbackPlot

En primer lugar, la devolución de llamada obtiene los valores de los tres campos de edición: a continuación, la devolución de llamada utiliza valores de, y para muestrear la función en el dominio de tiempo y calcular la transformada de Fourier.

f1 = str2double(get(handles.f1_input,'String')); f2 = str2double(get(handles.f2_input,'String')); t = eval(get(handles.t_input,'String'));
f1f2t A continuación, se actualizan las dos parcelas:

% Create frequency plot in proper axes plot(handles.frequency_axes,f,m(1:257)); set(handles.frequency_axes,'XMinorTick','on'); grid(handles.frequency_axes,'on');  % Create time plot in proper axes plot(handles.time_axes,t,x); set(handles.time_axes,'XMinorTick','on'); grid on

Temas relacionados