Hola Jausk.
Un dos tipos para hacer un programa en Matlab. Uno es scripts y el otro funciones.
1. SCRIPTS
Un script se define mediante un m-fichero, el cual está formado por un conjunto de sentencias pero no tiene la cualidad de ser una función como y=sin(x) que posee argumentos de entrada y salida. Además se puede guardar con cualquier nombre que deseamos, claro que debe ser un nombre referente a que hace el m.fichero.
1. FUNCIONES
Una función se define mediante un m-fichero, cuyo nombre coincide con el nombre de la función. La primera línea ejecutable debe tener la palabra function. Su sintaxis es
function argumentos_salida=nombre_función(argumentos_entrada)
seguida de las instrucciones necesarias. Cuando hay más de un argumento de salida, éstos deben ir entre corchetes y separados por comas.
Las variables definidas en la función (salvo los argumentos) son locales. Para que el valor de una variable sea compartido por varias funciones se emplea la instrucción global , cuya sintaxis es global variable y debe aparecer en todas las funciones que la compartan.
Los GUIDE dentro de FUNCIONES. Por lo tanto todo los varialbes son locales, eso quiere decir, cuando uno ejecuta un programa GUIDE, y luego escribe en la ventana de comandos los nombres de la variables para ver sus valores, nos va a salir este mensaje por ejemplo para el programa que voy a pegar mas adelante " ??? Undefined function or variable 'sumavector'.".
Ahora para poder acceder a un VARIABLE EXTERNA DESDE UN GUIDE. tenemos que escribir dentro de la funcion de GUIDE: Por ejempo: Si mi variables externa es A, entonces escibiremos: global A.
y en la ventana comandos tambien de de esa manera.
>> A=global A , A=[1 2 3 4];
luego ejecutamos nuestro archivo GUIDE.
aca copio el archivo GUIDE, que suma todo los elemntos del vector A, donde A es una VARIABLE EXTERNA.
%==================================================
function varargout = sumaexterna(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @sumaexterna_OpeningFcn, ...
'gui_OutputFcn', @sumaexterna_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 sumaexterna_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
function varargout = sumaexterna_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
global A
sumavector=sum(A);
set(handles.pushbutton1,'String', sumavector)
%====================================================
En mi caso yo he guardado mi GUIDE con el nombre de sumaexterna.m
para ejecutarlo. lo primero que hago es:
>> A=global A , A=[1 2 3 4];
luego ejecuto el GUIDE sumaexterna.
y como respuesta me va dar el GUIDE el valor de 10.
Bueno el valor de 10, sale en la ventana de figura de GUIDE sumaexterna.
Del programa GUIDE ANTERIOR Observa esta seccion:
%================================================
function pushbutton1_Callback(hObject, eventdata, handles)
global A
sumavector=sum(A);
set(handles.pushbutton1,'String', sumavector)
%==================================================
como veras, el comando global, justo esta aqui, eso es asi, porque dentro de esta funcion pushbutton1_Callback es en donde voy a llamar el valor de A.
OBSERVACION: Como estas el programando en GUIDE, supongo que conoces como funcionan los GUIDE. No vayas a pegar este archivo en matlab y ejecutarlo.Si haces eso, te va a salir un error.Las funciones no funcionan como scripts, un scripts uno puede copiar y ejecutar y todo sale muy bien, pero con los GUIDE no es asi.
Como no haz dejado tu correo, entonces no puede enviarte el archivo GUIDE, si deseas escribeme a mi correo y te envio el archivo para que veas como esta hecho.
Saludos.
JOSE JEREMIAS CABALLERO
ASESOR DE PROYECTOS CON MATLAB
PROFESOR DE METODOS NUMERICOS CON MATLAB
PROGRAMADOR EN MATLAB
[email protected]