《MATLAB/Simulink系统仿真超级学习手册》——2.2 MATLAB语言基本元素

简介:

本节书摘来自异步社区《MATLAB/Simulink系统仿真超级学习手册》一书中的第2章,第2.2节,作者:MATLAB技术联盟 , 石良臣著,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.2 MATLAB语言基本元素

MATLAB/Simulink系统仿真超级学习手册
MATLAB语言提供了丰富的数据类型,如实数、复数、向量、矩阵、字符串、多维数组、结构体、类和对象等,还提供了丰富的内置功能函数。这些功能使得MATLAB的编程功能非常强大。本节介绍变量和矩阵这两种最基本且常用的数据类型以及赋值语句的基本形式。

2.2.1 变量
变量是保存数据信息的一种最基本的数据类型。变量的命名应遵循如下规则:

(1)变量名必须以字母开头;

(2)变量名可以由字母、数字和下划线混合组成;

(3)变量名区分字母大小写;

(4)MATLAB保留了一些具有特定意义的默认变量,读者编程时可以直接使用,并尽量避免另外自定义,表2-4为MATLAB的系统保留变量。
screenshot

注意:A和a表示的是不同的变量,读者编程时必须注意。

2.2.2 赋值语句
MATLAB采用命令行形式的表达式语言,每一个命令行就是一条语句,其格式与书写的数学表达式十分相近,非常容易掌握。读者在命令窗口输入语句并按回车键确认后,该语句就由MATLAB系统解释运行,并给出运行结果。MATLAB的赋值语句有下面两种结构。

1.直接赋值语句
直接赋值语句的基本机构如下:

赋值变量=赋值表达式

其中,等号右边的表达式由变量名、常数、函数和运算符构成,直接赋值语句把右边表达式的值直接赋给了左边的赋值变量,并将返回值显示在MATLAB的命令窗口中。

【例2-6】对a赋值,实现a=100+99。

在MATLAB命令窗口中输入下面语句并按回车键确认。

>> a=100+99

运行结果如下:

a =
   199

注意:

(1)若赋值语句后面没有分号“;”,MATLAB命令窗口中将显示表达式的运算结果;若不想显示运算结果,则应该在赋值语句末尾加上分号;

(2)若省略赋值语句左边的赋值变量和等号,则表达式运算结果将默认赋值给系统保留变量ans;

(3)若等式右边的赋值表达式不是数值,而是字符串,则字符串两边应加单引号。

2.函数调用语句
直接赋值语句的基本结构如下:

[返回变量列表]=函数名(输入变量列表)

其中,等号右边的函数名对应于一个存放在合适路径中的MATLAB文本文件。函数可以分为两大类:一类是MATLAB内核中已经存在的内置函数;另一类是读者根据需要自定义的函数。

返回变量列表和输入变量列表均可以由若干变量名组成。

注意:

若返回变量个数大于 1,则它们之间应该用逗号或空格分隔;若输入变量个数大于1,则它们之间只能用逗号分隔。
screenshot

在MATLAB命令窗口中输入下面语句并按回车键确认。

>> a=sin(pi/2)

运行结果如下:

a =
  1

注意:

(1)函数名的命名规则与变量名命名规则一致,读者在命名自定义函数时也必须避免与MATLAB已有的内置函数重名;

(2)对于内置函数,读者可直接调用;对于自定义函数,该函数所对应的M文件应当存在并且保存在MATLAB可以搜索到的目录中。

2.2.3 矩阵及其元素表示
MATLAB的中文意思是“矩阵实验室”,矩阵是MATLAB进行数据处理的基本变量单元。因此,掌握矩阵的表示方法是进行MATLAB编程和应用的基础。

1.矩阵的表示
用MATLAB语言表示一个矩阵非常容易。在MATLAB命令窗口中输入下面语句并按回车键确认。

>> A=[1,2;3,4]

运行结果如下:

A =
   1   2
   3   4

可见矩阵变量A被成功赋值,并在MATLAB的工作空间中建立一个名为A的矩阵变量,读者可以在后继的命令和函数中随意调用该矩阵。在输入矩阵过程中必须遵循以下规则:

(1)必须使用方括号“[]”包括矩阵的所有元素;

(2)矩阵不同的行之间必须用分号或回车符隔开;

(3)矩阵同一行的各元素之间必须用逗号或空格隔开。

为方便用户使用,提高编程效率,除了最基本的直接输入方法外,MATLAB还提供给用户一些可以直接调用的内置基本矩阵函数,有时可以成为创建矩阵的捷径。

表2-5为MATLAB提供的主要内置基本矩阵函数。
screenshot

【例2-8】调用rand函数创建一个3行4列的随机矩阵。

在MATLAB命令窗口中输入下面语句并按回车键确认。

>> A=rand(3,4)

运行结果如下:

A =
  0.3112  0.6020  0.6892  0.0838
  0.5285  0.2630  0.7482  0.2290
  0.1656  0.6541  0.4505  0.9133

注意:向量是矩阵的一种特例,前面介绍的有关矩阵的表示方法完全适用于向量,只是表示矩阵行列数的n和m中,有一个为1。

【例2-9】输入一个行向量a=[1,2,3]和一个列向量b=[1;2;3]。

在MATLAB命令窗口中输入下面语句并按回车键确认。

>> a=[1,2,3]
b=[1;2;3]

运行结果如下:

a =
     1   2   3
b =
   1
   2
   3

MATLAB还提供了一个便利且高效的表达式来给等步长的行向量赋值,即冒号表达式。冒号表达式的基本调用格式为:

V=s:h:e

其中,s、e为标量,分别代表向量的起始值和终止值,h代表向量元素之间的步长值。

【例2-10】输入冒号表达式V=0:0.1:0.5。

在MATLAB命令窗口中输入下面语句并按回车键确认。

>> V=0:0.1:0.5

运行结果如下:

V =
  0  0.1000  0.2000  0.3000  0.4000  0.5000

2.矩阵元素的表示和赋值
矩阵元素的行号和列号称为该元素的下标,是通过“()”中的数字(行、列的标号)来标识的。矩阵元素可以通过其下标来引用,如A(i,j)表示矩阵A第i行第j列的元素。

【例2-11】取矩阵A=[1,2;3,4]第2行全部元素。

在MATLAB命令窗口中输入下面语句并按回车键确认。

>> A=[1,2;3,4];B=[A(2,1),A(2,2)]

运行结果如下:

B =
   3   4

注意:冒号“:”在这里也能发挥很大作用。A(2,:)表示矩阵A第2行全部元素,A(:,2)表示矩阵A第2列全部元素,A(1,1:2)表示矩阵A第1行第1~2列的全部元素。在MATLAB命令窗口中输入下面语句并按回车键确认。

>> A=[1,2;3,4];
B1=A(2,:)
B2=A(:,2)
B3=A(1,1:2)

运行结果如下:

B1 =
   3   4
B2 =
   2
   4
B3 =
   1   2
相关文章
|
3月前
|
数据可视化
基于MATLAB的OFDM调制发射与接收仿真
基于MATLAB的OFDM调制发射与接收仿真
|
2月前
|
5G
基于IEEE 802.11a标准的物理层MATLAB仿真
基于IEEE 802.11a标准的物理层MATLAB仿真
193 0
|
2月前
|
算法
基于MATLAB/Simulink平台搭建同步电机、异步电机和双馈风机仿真模型
基于MATLAB/Simulink平台搭建同步电机、异步电机和双馈风机仿真模型
|
2月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
2月前
|
开发框架 算法 .NET
基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA
简介:本文介绍基于ADMM的MIMO信号检测算法,结合无穷范数优化与交替方向乘子法,降低计算复杂度并提升检测性能。涵盖MATLAB 2024b实现效果图、核心代码及详细注释,并对比ML、MMSE、ZF、OCD_MMSE与LAMA等算法。重点分析LAMA基于消息传递的低复杂度优势,适用于大规模MIMO系统,为通信系统检测提供理论支持与实践方案。(238字)
|
3月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
244 2
|
3月前
|
监控
基于MATLAB/Simulink的单机带负荷仿真系统搭建
使用MATLAB/Simulink平台搭建一个单机带负荷的电力系统仿真模型。该系统包括同步发电机、励磁系统、调速系统、变压器、输电线路以及不同类型的负荷模型。
493 5
|
2月前
|
传感器 机器学习/深度学习 算法
【无人机协同】动态环境下多无人机系统的协同路径规划与防撞研究(Matlab代码实现)
【无人机协同】动态环境下多无人机系统的协同路径规划与防撞研究(Matlab代码实现)
203 0
|
2月前
|
算法 数据挖掘 调度
数据驱动的两阶段分布鲁棒(1-范数和∞-范数约束)的电热综合能源系统研究(Matlab代码实现)
数据驱动的两阶段分布鲁棒(1-范数和∞-范数约束)的电热综合能源系统研究(Matlab代码实现)
128 0
|
3月前
|
机器学习/深度学习 边缘计算 算法
【无人机】无人机群在三维环境中的碰撞和静态避障仿真(Matlab代码实现)
【无人机】无人机群在三维环境中的碰撞和静态避障仿真(Matlab代码实现)
206 0

热门文章

最新文章