佛山网站制作哪家好,吉林省建设厅网站二建管理系统,做药材有什么好的网站,怎样注册网站域名1.概述 MATLAB 提供了一个强大的编程语言和交互式计算环境。您可以使用此语言在 MATLAB 命令行中一次输入一个命令#xff0c;也可以向某个文件写入一系列命令#xff0c;按照执行任何 MATLAB 函数的相同方式来执行这些命令。使用 MATLAB 编辑器或任何其他文件编辑器可以创建…1.概述 MATLAB 提供了一个强大的编程语言和交互式计算环境。您可以使用此语言在 MATLAB 命令行中一次输入一个命令也可以向某个文件写入一系列命令按照执行任何 MATLAB 函数的相同方式来执行这些命令。使用 MATLAB 编辑器或任何其他文件编辑器可以创建您自己的函数文件。按照调用任何其他MATLAB 函数或命令的相同方式来调用这些函数。 两种程序文件 • 脚本不接受输入参数或返回输出参数。它们处理工作区中的数据。 • 函数可接受输入参数并返回输出参数。内部变量是函数的局部变量。 如果您是新 MATLAB 程序员您只需在当前文件夹中创建您希望尝试的程序文件。当您创建的文件越来越多时您可能希望将这些文件组织到其他文件夹和个人工具箱以便将其添加到您的 MATLAB 搜索路径中。 如果您复制多个函数名称MATLAB 会执行在搜索路径中显示的第一个函数。要查看程序文件例如 myfunction.m 的内容请使用 type myfunction 2.脚本 当调用脚本时MATLAB 仅执行在文件中找到的命令。脚本可以处理工作区中的现有数据也可以创建要在其中运行脚本的新数据。尽管脚本不会返回输出参数其创建的任何变量都会保留在工作区中以便在后续计算中使用。此外脚本可以使用 plot 等函数生成图形输出。 例如创建一个名为 magicrank.m 的文件该文件包含下列 MATLAB 命令 % Investigate the rank of magic squares
r zeros(1,32);
for n 3:32
r(n) rank(magic(n));
end
bar(r) 键入语句 magicrank使 MATLAB 执行命令、计算前 30 个幻方矩阵的秩并绘制结果的条形图。执行完文件之后变量 n 和 r将保留在工作区中。 3.函数 函数是可接受输入参数并返回输出参数的文件。文件名和函数名称应当相同。函数处理其自己的工作区中的变量此工作区不同于您在 MATLAB 命令提示符下访问的工作区。rank 提供了一个很好的示例。文件 rank.m 位于文件夹toolbox/matlab/matfun 您可以使用以下命令查看文件 type rank 下面列出了此文件 function r rank(A,tol)
% RANK Matrix rank.
% RANK(A) provides an estimate of the number of linearly
% independent rows or columns of a matrix A.
% RANK(A,tol) is the number of singular values of A
% that are larger than tol.
% RANK(A) uses the default tol max(size(A)) * norm(A) * eps.
s svd(A)
if nargin1
tol max(size(A)) * max(s) * eps;
end
r sum(s tol); 函数的第一行以关键字 function 开头。它提供函数名称和参数顺序。本示例中具有两个输入参数和一个输出参数。第一个空行或可执行代码行前面的后续几个行是提供帮助文本的注释行。当键入以下命令时会输出这些行 help rank 帮助文本的第一行是 H1 行当对文件夹使用 lookfor 命令或请求 help 时MATLAB 会显示此行。文件的其余部分是用于定义函数的可执行 MATLAB 代码。函数体中引入的变量 s 以及第一行中的变量即r 、 A 和 tol 均为函数的局部变量他们不同于 MATLAB 工作区中的任何变量。 本示例演示了 MATLAB 函数不同于其他编程语言函数的一个方面即可变数目的参数。可以采用多种不同方法使用 rank 函数 rank(A) r rank(A) r rank(A,1.e-6) 许多函数都按此方式运行。如果未提供输出参数结果会存储在 ans 中。如果未提供第二个输入参数此函数会运用默认值进行计算。函数体中提供了两个名为 nargin 和 nargout 的数量用于告知与函数的每次特定使用相关的输入和输出参数的数目。 rank 函数使用 nargin 而不需要使用 nargout 。 4.函数类型 MATLAB 提供了多种不同函数用于编程。 4.1匿名函数 匿名函数是一种简单形式的 MATLAB 函数该函数在一个 MATLAB 语句中定义。它包含一个 MATLAB表达式和任意数目的输入和输出参数。您可以直接在 MATLAB 命令行中定义匿名函数也可以在函数或脚本中定义匿名函数。这样您可以快速创建简单函数而不必每次为函数创建文件。根据表达式创建匿名函数的语法为 f (arglist)expression 下面的语句创建一个求某个数字的平方的匿名函数。当调用此函数时MATLAB 会将您传入的值赋值给变量 x 然后在方程 x.^2 中使用 x sqr (x) x.^2; 要执行 sqr 函数请键入 a sqr(5) a 25 4.2主函数和局部函数 任何非匿名函数必须在文件中定义。每个此类函数文件都包含一个必需的主函数最先显示和任意数目的局部函数位于主函数后面。主函数的作用域比局部函数更广。因此主函数可以从定义这些函数的文件外例如从 MATLAB 命令行或从其他文件的函数中调用而局部函数则没有此功能。局部函数仅对其自己的文件中的主函数和其他局部函数可见。 4.3私有函数 私有函数是一种主函数。其特有的特征是仅对一组有限的其他函数可见。如果您希望限制对某个函数的访问或者当您选择不公开某个函数的实现时此种函数非常有用。私有函数位于带专有名称 private 的子文件夹中。它们是仅可在母文件夹中可见的函数。例如假定文件夹 newmath 位于 MATLAB 搜索路径中。 newmath 的名为 private 子文件夹可包含只能供 newmath 中的函数调用的特定函数。 由于私有函数在父文件夹外部不可见因此可以使用与其他文件夹中的函数相同的名称。如果您希望创建您自己的特定函数的版本并在其他文件夹中保留原始函数此功能非常有用。由于 MATLAB 在标准函数之前搜索私有函数因此在查找名为 test.m 的非私有文件之前它将查找名为 test.m 的私有函数。 4.4嵌套函数 您可以在函数体中定义其他函数。这些函数称为外部函数中的嵌套函数。嵌套函数包含任何其他函数的任何或所有组成部分。在本示例中函数 B 嵌套在函数 A 中 function x A(p1, p2) ... B(p2) function y B(p3) ... end ... end 与其他函数一样嵌套函数具有其自己的工作区可用于存储函数所使用的变量。但是它还可以访问其嵌套在的所有函数的工作区。因此举例来说主函数赋值的变量可以由嵌套在主函数中的任意级别的函数读取或覆盖。类似地嵌套函数中赋值的变量可以由包含该函数的任何函数读取或被覆盖。 5全局变量 如果您想要多个函数共享一个变量副本只需在所有函数中将此变量声明为 global。如果您想要基础工作区访问此变量请在命令行中执行相同操作。全局声明必须在函数中实际使用变量之前进行。全局变量名称使用大写字母有助于将其与其他变量区分开来但这不是必需的。例如在名为 falling.m 的文件创建一个新函数 function h falling(t)
global GRAVITY
h 1/2*GRAVITY*t.^2; 然后以交互方式输入语句 global GRAVITY
GRAVITY 32;
y falling((0:.1:5)); 通过上述两条全局语句可以在函数内使用在命令提示符下赋值给 GRAVITY 的值。然后您可以按交互方式修改 GRAVITY 并获取新解而不必编辑任何文件。 6命令与函数语法 您可以编写接受字符参数的 MATLAB 函数而不必使用括号和引号。也就是说MATLAB 将 foo a b c解释为foo(a,b,c) 但是当使用不带引号的命令格式时MATLAB 无法返回输出参数。例如 legend apples oranges 使用 apples 和 oranges 作为标签在绘图上创建图例。如果您想要 legend 命令返回其输出参数必须使用带引号的格式 [legh,objh] legend(apples,oranges); 此外如果其中任一参数不是字符向量必须使用带引号的格式。小心 虽然不带引号的命令语法非常方便但在某些情况下可能会出现使用不当的情形而 MATLAB 并不会产生错误信息。 6.1在代码中构造字符参数 带引号的函数格式可用于在代码中构造字符参数。下面的示例处理多个数据文件即 August1.dat、August2.dat 等。它使用函数 int2str 该函数将整数转换为字符以便生成文件名 for d 1:31 s [August int2str(d) .dat]; load(s) % Code to process the contents of the d-th file end