如何在 MATLAB 中创建函数

如何在 MATLAB 中创建函数

MATLAB 中的函数允许您封装任务以便高效地重用和维护。函数有不同类型:普通函数、匿名函数、嵌套函数和子函数。使用函数标识符允许将函数作为参数传递到其他函数中。将函数保存在同名的 .m 文件中,可以更轻松地管理和运行它们。

MATLAB 它是科学、工程和数学领域使用最广泛的编程语言之一,因为它能够执行复杂的计算、建模和数据分析。它的基本支柱之一是能够创建 自定义功能 封装特定任务并有效地重用代码。

如果您曾经需要在 MATLAB 项目中重复计算或类似过程,那么创建自己的函数可能是最佳解决方案。在本文中,我们将深入探讨如何在 MATLAB 中定义、使用和组织函数,从基础知识到更高级的技术,例如匿名函数、函数标识符、子函数和函数间调用。

MATLAB 中的函数是什么?一 MATLAB 中的函数 它是一个代码块,接收一个或多个值作为输入,对其进行操作,并返回一个或多个输出。这些函数旨在在脚本、其他函数或命令窗口中运行。

函数使我们能够遵循结构化编程,将程序分解成更小的部分,每个部分负责特定的任务。这促进了 模块化,方便代码维护,并支持跨程序复用函数。如果您想了解更多关于模块化编程结构的信息,可以在这里查看:

将 AutoCAD Electrical 与其他工程软件集成

函数的基本语法和结构函数写在扩展名为 .m,且文件名必须与其包含的主函数名一致。基本结构如下:

function [salida1, salida2, ...] = nombreFuncion(entrada1, entrada2, ...)

% Comentarios descriptivos

% Cuerpo de la función

end

例如,计算向量最小值和最大值的函数可以写成这样:

function y = rango(x)

% Calcula el mínimo y el máximo de un vector x

y = [min(x) max(x)];

end

输入变量 它们在函数名称后的括号中表示。 产出 如果有多个,则用括号表示。函数内部可以使用符号 %,如果用户输入 help nombreFuncion.

实例:获取最小值和最大值的函数假设你有一个向量 v = rand(1,6) 带有随机值。如果应用上述函数:

>> v = rand(1,6);

>> rango(v)

ans = 0.031225 0.991870

Matlab 将返回向量的最小值和最大值。我们也可以定义此函数来分别显式返回这两个值:

function [minx, maxx] = minmax(x)

maxx = max(x);

minx = min(x);

end

打电话时 [minV, maxV] = minmax(v),您将获得两个单独的输出。需要注意的是,如果您没有明确指定这两个输出,则默认情况下只会显示第一个输出(在本例中, minx)。如果您想更深入地了解变量和结果,我建议您查看另一个有用的资源,它对该主题进行了大量的解释:

定义函数时常见的错误一个常见的错误是忘记计算函数体中的某个输出变量。这可能会导致输出为空,甚至出现警告。例如,如果你定义:

function [minx, maxx] = minmax2(x)

maxx = max(x);

minimo = min(x); % 'minimo' no es 'minx'

end

可变的 minx 尚未计算,因此为空,这可能会导致警告信息。

在命令窗口中创建函数函数也可以直接写在 命令窗口,尽管此选项仅用于非常简单的函数或快速测试。不建议用于复杂的函数,因为它们无法轻松编辑或永久保存。

将函数保存在 .m 文件中要永久使用某个函数,必须创建一个与该函数同名且扩展名相同的文件 .m。它必须保存在 MATLAB 可识别的路径中。您可以使用以下命令验证包含的目录 path并使用 addpath('ruta').

完整例子:解二次方程让我们建立一个函数来解决以下类型的方程:

ax^2 + bx + c = 0该函数可能是这样的:

function x = resuelveEc2G(a,b,c)

discrim = b^2 - 4*a*c;

x1 = (-b - sqrt(discrim))/(2*a);

x2 = (-b + sqrt(discrim))/(2*a);

x = [x1; x2];

end

运行时:

>> resuelveEc2G(1, -1, -6)

ans = -2

3

MATLAB 支持复数,因此如果判别式为负,则复数根也能正确计算。

将任务划分为辅助功能良好的编程习惯是将任务分解成清晰的小块。假设我们要让用户输入一个方程的系数,然后求解并绘制图形。与其将所有操作都放在一个函数中,不如像这样分解:

询问Ec2G系数: 询问用户系数 a、b 和 c解决Ec2G: 用这些系数解方程绘制抛物线: 画出得到的抛物线及其交点一 主要功能 呼叫 ec2G 您可以按照正确的顺序调用它们来加入它们:

function ec2G()

[a,b,c,error] = pideCoeficientesEc2G();

if ~error

raices = resuelveEc2G(a,b,c);

disp('Las raíces de la ecuación son:');

disp(raices);

if imag(raices(1)) == 0

dibujaParabola([a,b,c], raices);

end

end

end

函数标识符函数句柄允许您像使用值一样使用函数,并通过运算符进行赋值 @。 例如:

f = @cuadrado;现在您可以使用 f 就像函数一样 cuadrado 直:

b = f(2); % Devuelve 4如果您想将函数作为参数传递给其他函数,这尤其有用,例如:

integral(@cuadrado, 1, 3)您还可以直接在调用中定义标识符:

integral(@(x) x.^2, 1, 3)匿名函数:快速且强大一 匿名函数 它是一个单行定义的函数,适用于简单或临时任务。其语法如下:

h = @(x) 2*(x.^2)*exp(-x);您可以直接使用它:

g(1)

ans = 0.73576

一个优点是您可以将它们集成到其他功能中,而无需创建单独的文件。

函数中的函数MATLAB 允许在同一个文件中定义多个函数。与文件名匹配的函数是主函数,其余函数称为 子功能尽管从文件外部看不到它们,但它们可以在文件内部相互调用。

也有 嵌套函数,它们定义在另一个函数的主函数中。与子函数不同,嵌套函数可以访问外部函数的变量。

嵌套函数示例练习假设你有一个函数来计算数据集的平均值和标准差。你可以像这样定义嵌套函数:

function [med,des] = estadistica_1(x)

n = length(x);

media();

desviacion();

function media()

med = sum(x)/n;

end

function desviacion()

xd = x - med;

des = sqrt(sum(xd.^2)/(n-1));

end

end

这使得 内部函数从外部环境访问变量,避免将它们作为参数传递。

函数作为参数:数值导数一个非常有趣的应用是定义一个函数,它接受另一个函数作为参数。让我们看看如何计算某个点的导数:

function yp = derivada(f,x0)

h = 1e-5;

yp = (f(x0 - 2*h) - 8*f(x0 - h) + 8*f(x0 + h) - f(x0 + 2*h)) / (12*h);

end

我们定义一个匿名函数:

f1 = @(x) x^3 - 6*x^2 + 3;

然后我们计算它的导数:

derivada(f1, 2)

ans = -12.0000你甚至可以计算二阶导数,例如:

f2 = @(x) derivada(f1, x);

案例研究:更多函数示例温度换算:function F = C2F(C)

F = (9/5)*C + 32;

end两个向量之间的欧几里得距离:function d = distancia(u,v)

d = sqrt(sum((u - v).^2));

end掷骰子的结果总和:function [valores, total] = lanzarDados(n)

valores = randi(6, 1, n);

total = sum(valores);

end按矩阵中的列平均:function medias = mediaColumnas(A)

medias = mean(A);

end在 MATLAB 中创建和使用函数是更好地组织程序、减少错误和提高代码效率的重要工具。通过本篇全面的教程,您将了解如何定义基本函数、匿名函数和嵌套函数,如何将它们用作参数,以及如何通过重用任务来构建整个程序。掌握这些技巧将使您能够更加自信、清晰地应对更具挑战性的项目。

万用表精通工业和家用软件、开发和应用的专家。我们乐于充分利用市面上所有软件、程序、应用、工具和操作系统的潜力。

相关推荐

颓败的英文翻译
bt365娱乐线

颓败的英文翻译

📅 10-01 👁️ 247
面试复试意味着什么
365bet下载地址

面试复试意味着什么

📅 06-28 👁️ 2499
华为手机充电时间和充满电时间详解
365体育app手机版安全下载

华为手机充电时间和充满电时间详解

📅 07-23 👁️ 6811