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中的基本数据类型与变量操作
【10月更文挑战第1天】 MATLAB 是一种广泛应用于数学计算和科学研究的编程语言,其核心是矩阵运算。本文详细介绍了 MATLAB 中的基本数据类型,包括数值类型(如 `double` 和 `int`)、字符数组、逻辑类型、结构体、单元数组和函数句柄,并通过代码示例展示了变量操作方法。
96 0
|
26天前
|
算法 数据可视化 数据处理
MATLAB内置函数
【10月更文挑战第6天】本文详细介绍了MATLAB的内置函数和自定义函数,涵盖数学计算、矩阵操作、图形绘制等方面。通过具体代码示例,展示了如何使用内置函数和创建自定义函数,以及它们在性能、灵活性和可读性上的优劣。同时,文章还讨论了函数文件与脚本文件的区别,匿名函数和函数句柄的高级应用,帮助读者更好地利用MATLAB解决复杂问题。
27 1
|
28天前
|
存储 机器学习/深度学习 数据可视化
MATLAB脚本与函数
【10月更文挑战第4天】本文介绍了MATLAB脚本与函数的基本概念及编写方法,涵盖脚本和函数的创建、运行及优缺点,通过示例帮助初学者快速上手。同时,文章还涉及数据类型、控制结构、数据可视化、文件操作、错误处理等内容,提供了丰富的示例和学习资源,助力初学者逐步掌握MATLAB编程。
71 3
|
3月前
|
Python
【Python】实现MATLAB中计算两个矩形相交面积的rectint函数
Python中实现MATLAB中rectint函数的方法,该函数用于计算两个矩形相交区域的面积,并通过定义Rectangle类和calc_area函数展示了如何计算两个矩形的交集面积。
47 1
|
4月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于负相关误差函数的4集成BP神经网络matlab建模与仿真
**算法预览:** 图像显示无水印的2022a版MATLAB运行结果 **软件版本:** MATLAB 2022a **核心代码片段:** 省略展示 **理论概述:** NCL集成BP网络利用负相关提升泛化,结合多个弱模型减少错误关联。通过λ参数控制模型间负相关程度,λ&gt;0增强集成效果,提高预测准确性和系统稳健性。
|
4月前
|
数据采集 并行计算 算法
LabVIEW与Matlab联合编程的途径及比较
LabVIEW与Matlab联合编程的途径及比较
67 0
LabVIEW与Matlab联合编程的途径及比较
|
5月前
|
算法 数据可视化 数据挖掘
MATLAB中常用的数学函数及其应用示例
MATLAB中常用的数学函数及其应用示例
|
5月前
|
机器学习/深度学习 数据可视化 算法
探索MATLAB世界:掌握基础知识与实用技能(1. MATLAB环境与基本操作 2. 数据类型与变量 3. 条件与循环,1. 数据分析与统计 2. 图像处理与计算机视觉 3. 信号处理与控制系统)
探索MATLAB世界:掌握基础知识与实用技能(1. MATLAB环境与基本操作 2. 数据类型与变量 3. 条件与循环,1. 数据分析与统计 2. 图像处理与计算机视觉 3. 信号处理与控制系统)
51 0
|
6月前
|
Serverless
基于Logistic函数的负荷需求响应(matlab代码)
基于Logistic函数的负荷需求响应(matlab代码)
|
6月前
|
数据安全/隐私保护
地震波功率谱密度函数、功率谱密度曲线,反应谱转功率谱,matlab代码
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度