MATLAB 常用数学函数和数组和字符串、元胞数组和结构体,MATLAB 编程,关系运算符和逻辑变量(三)

简介: MATLAB 常用数学函数和数组和字符串、元胞数组和结构体,MATLAB 编程,关系运算符和逻辑变量

调试脚本文件

MATLAB 是一种解释与执行同时进行的语言,代码的调试比较方便。程序调试就是找到程序中的错误并去除。错误大致分为语法错误,运行错误和异常。

MATLAB 通常能检查出语法错误,例如遗漏括号,遗漏引号,命令名错误等。

运行错误是流程出错或者程序有误造成的执行结果错误。异常是程序执行时不满足执行条件而造成的错误。

MATLAB 可以通过设置断点查看工作区的值来调试。

调试流程

(1) 分析错误

运行程序时,命令窗口提示错误。根据错误提示,分析程序出现错误的原因,调试过程

中,在可能出现错误的位置设置断点。如果没有报错但计算结果有误,则分析哪一步计算出

现问题,在可能出现错误的位置设置断点。

(2) 设置断点

MATLAB 中编辑器功能区有设置断点(breakpoint)的选项,暂停代码执行选项,可用

来设置或清除断点。设置断点时,在行的左侧点击出现红色圆点,再次点击红色圆点处可以

去除断点。当程序执行时,运行到断点停止,可以查看中间步骤的变量。

 

在指定行设置断点,程序执行时在断点指定行停止执行。在恢复执行前,可以查看或修改函数工作空间中变量的值。将鼠标点在需要停止的文本行的左边,显示红色圆点代表这一行设置了断点。

 

(3) 运行程序

点击工具栏编辑器中的运行按钮或者按F5 键运行程序,当程序运行到断点之处,程序暂停运行,等待下一步操作。断点右侧显示绿色箭头,绿色箭头指示要执行的下一个命令行。

 

 

(4)调试运行时

程序调试运行时,命令行的提示符变为“K>>”,可以在命令行中输入命令,不会打断程序的执行。此时可以输入一些命令,查看中间变量。

(5)单步执行和继续执行

单击编辑器中的继续按钮或者按F5 键,从断点处继续运行。按步进按钮或者按F10 键可以进行单步调试,程序一步一步向下执行。

 

(6)查看中间变量

将鼠标停留在某个变量上,会显示变量的当前值。也可以通过查看工作空间的各个变量的值和属性,查看变量的值,检查计算的值是否正确。

 

 

(7)修改代码

根据以上分析,发现错误,纠正错误,修改程序,清除所有断点,保存文件。

输入输出命令

MATLAB 可以从用户获取输入,控制格式化输出。输入和输出的命令包含如下。

disp(A) 显示A的内容
disp(‘text’) 显示单引号内部的文本串
format 控制屏幕输出的显示格式
fprintf 格式化写入屏幕或者文件中
x=input(‘text’) 显示单引号内的文本,等待用户从
键盘输入,将输入存储在x 中

 

函数

1.声明函数

function [y1,…,yN] = myfun(x1,…,xM)

function [y1,…,yN] = myfun(x1,…,xM) 声明名为myfun 的函数, 该函数接受输入

x1,…,xM 并返回输出y1,…,yN。将函数代码保存在扩展名为.m 的文本文件中。文件的名称应与文件中其函数的名称一致。函数名称以字母字符开头,并且可以包含字母、数字或下划线。使用end 关键字来表示每个函数在文件中的结尾

2函数输入输出参数

(1) 函数输入参数

nargin 针对当前正在执行的函数,返回传递给该函数调用的输入参数的数目。该nargin

语法仅可在函数体内使用。

nargin(fx) 返回函数定义语句fx 中出现的输入参数的数目。

(2) 函数输出参数

nargout 针对当前正在执行的函数,返回该函数调用中指定的输出参数的数目。该

nargout 语法仅可在函数体内使用。

nargout(fx) 返回fx 函数定义语句中出现的输出参数的数目。

3.函数类型

(1) 局部函数和嵌套函数

程序文件中可以包含多个函数,局部函数可用于将程序分解为更小的任务。文件中的其他函数称为局部函数。局部函数仅对同一文件中的其他函数可见。局部函数也被称为子函数。

例如:一个名称为mystats.m 的程序文件,其中包括主函数mystats 以及两个局部函数mymean 和mymedian。

 

(2) 匿名函数

匿名函数不存储在程序文件中,允许定义该函数而不必创建程序文件,匿名函数可以接

受输入并返回输出,就像标准函数一样。但是,可能只包含一个可执行语句。

匿名函数通常用于定义数学表达式,使用功能函数(即接受函数句柄作为输入的函数),

将函数句柄用作输入,在特定值范围计算该表达式。

例如,创建用于计算平方数的匿名函数的句柄:

1. sqr = @(x) x.^2;
2. a = sqr(5);

变量sqr 是一个函数句柄。@ 运算符创建句柄,@ 运算符后面的圆括号() 包括函数的输入参数。该匿名函数接受单个输入x,并显式返回单个输出,即大小与包含平方值的x相同的数组。通过将特定值(5) 传递到函数句柄来计算该值的平方。

(3) 计算函数

[y1,…,yN] = feval(fun,x1,…,xM)

使用函数的名称或其句柄以及输入参数x1,…,xM 来计算函数的结果。

a = feval(sqr, 5); 和a = sqr(5); 计算函数句柄sqr,输入为5 的值。

关系运算符和逻辑变量

一、逻辑关系符

1.关系运算

符号 等效函数 说明
< lt 小于
<= le 小于或等于
> gt 大于
>= ge 大于或等于
== eq 等于
~= ne 不等于

当用于比较数组时,比较的数组具有相同的维数,关系运算符逐元素比较数组,得到数组元素为比较结果为1 或0。在MATLAB 中标量也是一个数组,数组和标量可以进行比较,

比较时,数组中的每个元素都和标量进行比较。

 

2.logical 类和logical 函数

logical 是一种逻辑数据类型,逻辑变量的值为1(真)或者0(假)。

使用logical 函数可以将数组转化为逻辑数组,使用double 函数也可以将逻辑数组转换为double 类型的数组。

使用逻辑数组寻址另一个数组时,可以从数组中提取到逻辑值为1 位置的元素。使用逻辑数组用于寻址计算,例如:x(x<y)能够找到x 中所有逐个小于y 的元素,将找到的元素存储在b 中。

 

二、逻辑运算

1.逻辑运算符

MATLAB 有多个逻辑运算符,也称为布尔(boolean)运算符,逻辑运算也称为布尔运算。

逻辑运算符的优先级比算数运算符和逻辑运算符低,NOT 运算符除外。

Short-circuit &&,|| 具有短路功能的逻辑运算
& 计算逻辑 AND
~ 计算逻辑 NOT
| 计算逻辑 OR

(1) NOT 运算

NOT 运算~A 返回与A 大小相同的逻辑数组。如果A 中元素为零值,则数组中对应元素为逻辑值1 (true) 值;如果A 中元素为非零值,则数组中对应元素为逻辑值0 (false)。

(2) AND 运算

A & B 对数组A 和B 执行逻辑AND 操作,并返回包含设置为逻辑值1 (true) 或逻辑值0 (false) 的元素的数组。

如果A 和B 在相同的数组位置都包含非零元素,则输出数组中对应位置的元素将设置为逻辑值1 (true)。如果不是,则将数组元素设置为0。

(3) OR 运算

A | B 对数组A 和B 执行逻辑OR 操作,并返回包含设置为逻辑值1 (true) 或逻辑值0

(false) 的元素的数组。如果A 或B 中相同位置元素存在非零元素,则输出数组中对应元素为逻辑值1 (true)。如果不是,则将数组元素设置为0。

(4) 短路逻辑运算

短路逻辑运算符是当有多个表达式时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值,只有结果不能由第一个表达式确定的时候,才计算第二个表达式的值。

expr1 && expr2 表示使用短路行为的逻辑AND 运算,如果两个表达式的值都为true,返回逻辑1(true),如果有一个为false,返回逻辑值0(false)。

即,如果expr1 为逻辑值0 (false),

将不计算expr2 的结果。每个表达式的计算结果都必须为标量逻辑值。

expr1 || expr2 表示使用短路行为的逻辑OR 运算,如果有一个值为true,返回逻辑值1(true),如果两个值都为false,则返回逻辑值0(false)。

即,如果expr1 为逻辑值1 (true),将不计算expr2 的结果。每个表达式的计算结果都必须为标量逻辑值。

2.逻辑函数

常用的逻辑函数如下。

xor 计算逻辑异OR
all 确定所有的数组元素是为非零还是True
any 确定是否有任何数组元素非零
find 查找非零元素的索引和值
true 逻辑值1(真)
false 逻辑0(假)
logical 将数值转换为 逻辑 值
islogical 确定输入是否为 逻辑 数组
isinteger 确定输入是否为 整数 数组
isfloat 确定输入是否为 浮点 数组
isnumeric 确定输入是否为 数值 数组
ischar 确定输入是否为 字符 数组
isfinite 确定哪些数组元素为 有限 值
isinf 确定哪些数组元素为 无限 值
isrel 确定数组是否使用 复数 存储
isnan 确定哪些数组元素为 NaN

目录
相关文章
|
1月前
|
索引
matlab--------矩阵重构,重新排列的相关函数说明
matlab--------矩阵重构,重新排列的相关函数说明
45 0
matlab--------矩阵重构,重新排列的相关函数说明
|
1月前
|
机器学习/深度学习 算法 数据库
基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱
基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱
|
25天前
雷达模糊函数及MATLAB仿真(三)
雷达模糊函数及MATLAB仿真
15 0
|
25天前
雷达模糊函数及MATLAB仿真(一)
雷达模糊函数及MATLAB仿真
25 0
|
1月前
|
算法
【数学建模竞赛】Matlab逻辑规则,结构基础及函数
【数学建模竞赛】Matlab逻辑规则,结构基础及函数
26 0
|
2月前
|
机器学习/深度学习 算法
基于自适应支持向量机的matlab建模与仿真,不使用matlab的SVM工具箱函数
基于自适应支持向量机的matlab建模与仿真,不使用matlab的SVM工具箱函数
|
3月前
|
机器学习/深度学习 存储
【Matlab智能算法】极限学习机-遗传算法(ELM-GA)函数极值寻优——非线性函数求极值
【Matlab智能算法】极限学习机-遗传算法(ELM-GA)函数极值寻优——非线性函数求极值
|
3月前
|
机器学习/深度学习 存储
【Matlab智能算法】Elman神经网络-遗传算法(Elman-GA)函数极值寻优——非线性函数求极值
【Matlab智能算法】Elman神经网络-遗传算法(Elman-GA)函数极值寻优——非线性函数求极值
|
3月前
|
机器学习/深度学习 存储
【Matlab智能算法】RBF神经网络-遗传算法(RBF-GA)函数极值寻优——非线性函数求极值
【Matlab智能算法】RBF神经网络-遗传算法(RBF-GA)函数极值寻优——非线性函数求极值
|
3月前
|
机器学习/深度学习 存储 算法
【程序员必须掌握的算法】【Matlab智能算法】GRNN神经网络-遗传算法(GRNN-GA)函数极值寻优——非线性函数求极值
【程序员必须掌握的算法】【Matlab智能算法】GRNN神经网络-遗传算法(GRNN-GA)函数极值寻优——非线性函数求极值

热门文章

最新文章