Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> MATLAB

MATLAB - Funciones

Una función es un grupo de declaraciones que juntas realizan una tarea. En MATLAB, las funciones se definen en archivos separados. El nombre del archivo y de la función debe ser el mismo.

Las funciones operan en variables dentro de su propio espacio de trabajo, que también se denomina espacio de trabajo local , separado del espacio de trabajo al que accede en el símbolo del sistema de MATLAB, que se denomina espacio de trabajo base .

Las funciones pueden aceptar más de un argumento de entrada y pueden devolver más de un argumento de salida.

La sintaxis de una instrucción de función es −

function [out1,out2, ..., outN] = myfun(in1,in2,in3, ..., inN)

Ejemplo

La siguiente función llamada mymax debe escribirse en un archivo llamado mymax.m . Toma cinco números como argumento y devuelve el máximo de los números.

Cree un archivo de función, llamado mymax.m y escriba el siguiente código en él −

function max = mymax(n1, n2, n3, n4, n5)

%This function calculates the maximum of the
% five numbers given as input
max =  n1;
if(n2 > max)
   max = n2;
end
if(n3 > max)
   max = n3;
end
if(n4 > max)
   max = n4;
end
if(n5 > max)
   max = n5;
end

La primera línea de una función comienza con la palabra clave función . Da el nombre de la función y el orden de los argumentos. En nuestro ejemplo, mymax La función tiene cinco argumentos de entrada y un argumento de salida.

Las líneas de comentarios que vienen justo después de la declaración de la función proporcionan el texto de ayuda. Estas líneas se imprimen cuando escribe −

help mymax

MATLAB ejecutará la instrucción anterior y devolverá el siguiente resultado −

This function calculates the maximum of the
   five numbers given as input

Puede llamar a la función como −

mymax(34, 78, 89, 23, 11)

MATLAB ejecutará la instrucción anterior y devolverá el siguiente resultado −

ans = 89

Funciones anónimas

Una función anónima es como una función en línea en los lenguajes de programación tradicionales, definida dentro de una sola declaración de MATLAB. Consta de una sola expresión de MATLAB y cualquier número de argumentos de entrada y salida.

Puede definir una función anónima directamente en la línea de comando de MATLAB o dentro de una función o secuencia de comandos.

De esta manera, puede crear funciones simples sin tener que crear un archivo para ellas.

La sintaxis para crear una función anónima a partir de una expresión es

f = @(arglist)expression

Ejemplo

En este ejemplo, escribiremos una función anónima llamada potencia, que tomará dos números como entrada y devolverá el primer número elevado a la potencia del segundo.

Cree un archivo de script y escriba el siguiente código en él −

Demostración en vivo
power = @(x, n) x.^n;
result1 = power(7, 3)
result2 = power(49, 0.5)
result3 = power(10, -10)
result4 = power (4.5, 1.5)

Cuando ejecuta el archivo, muestra −

result1 =  343
result2 =  7
result3 =  1.0000e-10
result4 =  9.5459

Funciones principales y secundarias

Cualquier función que no sea una función anónima debe definirse dentro de un archivo. Cada archivo de función contiene una función principal requerida que aparece primero y cualquier número de subfunciones opcionales que vienen después de la función principal y que esta utiliza.

Las funciones primarias se pueden llamar desde fuera del archivo que las define, ya sea desde la línea de comandos o desde otras funciones, pero las funciones secundarias no se pueden llamar desde la línea de comandos u otras funciones, fuera del archivo de funciones.

Las subfunciones solo son visibles para la función principal y otras subfunciones dentro del archivo de función que las define.

Ejemplo

Escribamos una función llamada cuadrática que calcule las raíces de una ecuación cuadrática. La función tomaría tres entradas, el coeficiente cuadrático, el coeficiente lineal y el término constante. Devolvería las raíces.

El archivo de función quadratic.m contendrá la función principal quadratic y la subfunción disco , que calcula el discriminante.

Cree un archivo de función quadratic.m y escribe el siguiente código en él −

function [x1,x2] = quadratic(a,b,c)

%this function returns the roots of 
% a quadratic equation.
% It takes 3 input arguments
% which are the co-efficients of x2, x and the 
%constant term
% It returns the roots
d = disc(a,b,c); 
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end   % end of quadratic

function dis = disc(a,b,c) 
%function calculates the discriminant
dis = sqrt(b^2 - 4*a*c);
end   % end of sub-function

Puede llamar a la función anterior desde el símbolo del sistema como −

quadratic(2,4,-4)

MATLAB ejecutará la instrucción anterior y devolverá el siguiente resultado −

ans = 0.7321

Funciones anidadas

Puede definir funciones dentro del cuerpo de otra función. Estas se llaman funciones anidadas. Una función anidada contiene cualquiera o todos los componentes de cualquier otra función.

Las funciones anidadas se definen dentro del ámbito de otra función y comparten el acceso al espacio de trabajo de la función contenedora.

Una función anidada sigue la siguiente sintaxis −

function x = A(p1, p2)
...
B(p2)
   function y = B(p3)
   ...
   end
...
end

Ejemplo

Reescribamos la función cuadrática , del ejemplo anterior, sin embargo, esta vez la función de disco será una función anidada.

Cree un archivo de función quadratic2.m y escribe el siguiente código en él −

function [x1,x2] = quadratic2(a,b,c)
function disc  % nested function
d = sqrt(b^2 - 4*a*c);
end   % end of function disc

disc;
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end   % end of function quadratic2

Puede llamar a la función anterior desde el símbolo del sistema como −

quadratic2(2,4,-4)

MATLAB ejecutará la instrucción anterior y devolverá el siguiente resultado −

ans =  0.73205

Funciones privadas

Una función privada es una función principal que solo es visible para un grupo limitado de otras funciones. Si no quiere exponer la implementación de una(s) función(es), puede crearlas como funciones privadas.

Las funciones privadas residen en subcarpetas con el nombre especial privado .

Solo son visibles para las funciones de la carpeta principal.

Ejemplo

Reescribamos la cuadrática función. Esta vez, sin embargo, el disco función que calcula el discriminante, será una función privada.

Cree una subcarpeta llamada privada en el directorio de trabajo. Almacene el siguiente archivo de función disc.m en ella −

function dis = disc(a,b,c) 
%function calculates the discriminant
dis = sqrt(b^2 - 4*a*c);
end      % end of sub-function

Cree una función quadratic3.m en su directorio de trabajo y escriba el siguiente código en ella −

function [x1,x2] = quadratic3(a,b,c)

%this function returns the roots of 
% a quadratic equation.
% It takes 3 input arguments
% which are the co-efficient of x2, x and the 
%constant term
% It returns the roots
d = disc(a,b,c); 

x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end      % end of quadratic3

Puede llamar a la función anterior desde el símbolo del sistema como −

quadratic3(2,4,-4)

MATLAB ejecutará la instrucción anterior y devolverá el siguiente resultado −

ans =  0.73205

Variables globales

Las variables globales pueden ser compartidas por más de una función. Para ello, debe declarar la variable como global en todas las funciones.

Si desea acceder a esa variable desde el espacio de trabajo base, declare la variable en la línea de comando.

La declaración global debe ocurrir antes de que la variable se use realmente en una función. Es una buena práctica usar letras mayúsculas en los nombres de las variables globales para distinguirlas de otras variables.

Ejemplo

Vamos a crear un archivo de función llamado promedio.m y escribir el siguiente código en él −

function avg = average(nums)
global TOTAL
avg = sum(nums)/TOTAL;
end

Cree un archivo de script y escriba el siguiente código en él −

global TOTAL;
TOTAL = 10;
n = [34, 45, 25, 45, 33, 19, 40, 34, 38, 42];
av = average(n)

Cuando ejecute el archivo, mostrará el siguiente resultado −

av =  35.500

MATLAB

  1. 10 funciones populares en Stratasys Insight
  2. Funciones de C++ con ejemplos de programas
  3. Funciones Python Lambda con EJEMPLOS
  4. Funciones de Verilog
  5. C - Funciones
  6. MATLAB - Descripción general
  7. MATLAB-Variables
  8. MATLAB - Comandos
  9. MATLAB - Tipos de datos
  10. MATLAB - Matriz
  11. MATLAB-Números