MATLAB—数组运算及数组化编程

前言

编程语言的编译执行有俩种:

  • 解释型语言:按照源程序中的语句顺序,直接的逐句进行分析解释,并立即执行。
  • 编译型语言:先把源代码全部翻译为目标代码,然后运行目标代码,得到执行结果。

像如C语言就是编译型语言,而MATLAB就是解释型语言。
MATLAB精心设计数组和数组运算的目的在于:

  • 使计算程序简单、易读,使程序指令更接近于数学计算公式;
  • 提高程序的向量化程度,提高计算效率,节省计算机开销。

如下所示,数组可以看作MATLAB的根基:
MATLAB—数组运算及数组化编程
其次是数组的运算的特点,数组运算每次调用的命令将会同时的加在数组所含的每个标量元素上。即对俩个数组直接的相加,会作用到数组的每个元素上。(前提:俩个数组的维度相同)
比如:
MATLAB—数组运算及数组化编程
MATLAB—数组运算及数组化编程

:指默认维度上所有元素

一.数组的结构和创建

1.数组及其结构

数组的维度(一般是二维数组):
MATLAB—数组运算及数组化编程
MATLAB—数组运算及数组化编程
可以通过一些指令来获取数组的结构:
MATLAB—数组运算及数组化编程
(维度说的是:行,维度规模说的是:一行的元素个数)
表示空数组就是:[]。

2.行数组的创建

分别介绍:

  • 递增行数组创建
  • 一般数组创建
  • 随机数组创建
  • .mat文件创建
  • 利用MATLAB函数创建

以下创建方法为递增(减)型行数组的创建:
元素之间有规律,常作为一个函数的自变量或者循环的自变量使用。
1.冒号生成命令
格式:x=a:inc:b,其中a是数组初始值,b是数组结束值(可能并不是最后一个元素),inc是元素的间距。

MATLAB—数组运算及数组化编程
MATLAB—数组运算及数组化编程
2.定数生成指令
格式:x=linspace(a,b,n),其中inc=(b-a)/(n-1)。
通俗的讲就是:从a到b均匀的生成n个元素。
MATLAB—数组运算及数组化编程
MATLAB—数组运算及数组化编程
3.对数等距生成指令
格式:x=logspace(a,b,n),其中inc=(b-a)/(n-1),a、b分别为10的a、b次幂。
MATLAB—数组运算及数组化编程

其他类型数组的创建:
4.小规模数组创建
一个元素一个元素的输入
MATLAB—数组运算及数组化编程
5.创建随机数组
如使用rand(a,b),意为产生a行b列个0到1之间的均匀随机数的数组:
MATLAB—数组运算及数组化编程

6.数组编辑器创建
此方法适用于中等数组的创建
首先点击新建变量
MATLAB—数组运算及数组化编程
在变量的表中填写变量的元素
MATLAB—数组运算及数组化编程
在变量区可以对数组变量进行:重命名,永久保存…等操作
MATLAB—数组运算及数组化编程
通过另存为操作,可以将数据生成.mat文件,而且可以调用数据
MATLAB—数组运算及数组化编程
7.利用MATLAB函数创建

MATLAB—数组运算及数组化编程
例子:
MATLAB—数组运算及数组化编程
MATLAB—数组运算及数组化编程
MATLAB—数组运算及数组化编程
MATLAB—数组运算及数组化编程

3.对数组构造的操作

命令 含义
permute 重排数组的维度次序
repmat 按指定的行数、列数铺放模块数组,以形成更大的数组
reshape 在总元素不变的情况下,改变数组的行列数
flipud 以数组“水平中线”为对称轴,交换上下对称位置上的数组元素
fliplr 以数组“垂直中线”为对称轴,交换左右对称位置上的数组元素
rot90 把数组逆时针旋转90°
diag 抽取对角向量

MATLAB—数组运算及数组化编程
MATLAB—数组运算及数组化编程
MATLAB—数组运算及数组化编程

二.数组元素编址及寻访

1.数组元素的编址

给数组中的每一个元素编址,可以根据不同的地址来对数组中指定元素的访问

一般分为俩种编址方法(以二位数组为例):

  • 全下标编制
  • 单序号编制

全下表就是我们经常使用的,即用行列的相对位置来编址。
单序号就是,将元素按照行列顺序(从上到下,从左到右)首尾相接排成一列,单序号即排位,例:
MATLAB—数组运算及数组化编程

俩种编址的转换
MATLAB—数组运算及数组化编程

2.二维数组元素的寻访

数组中a([a,b],[c,d])代表a数组的第a、b行,第c、d列的元素
数组中a(x,:)代表第x行,以及x行所有列的元素
操作l=a>p可以找出a数组中元素值大于p的位置,l为逻辑数组
通过a(l)=k可以改变逻辑真值
1.按编址寻访及赋值
MATLAB—数组运算及数组化编程
2.按条件寻访及赋值

MATLAB—数组运算及数组化编程
MATLAB—数组运算及数组化编程
3.单序号寻访
MATLAB—数组运算及数组化编程
4.按址赋值
MATLAB—数组运算及数组化编程
5.按条件寻访及赋值
MATLAB—数组运算及数组化编程
MATLAB—数组运算及数组化编程

三.数组运算

数组运算遵循俩个通则:
1.同规模数组之间的运算,是对应元素之间的运算
2.标量与数组的运算,是标量与数组每一个元素的运算

数组的相关算符及优先级如示:
MATLAB—数组运算及数组化编程

非数的问题

MATLAB—数组运算及数组化编程
问题出在st./t当t=0时,会出现错误,但MATLAB不会报错(MATLAB中允许非数),Lt返回的是一个与t规格相同的逻辑数组,对自变量t重新赋值,然后乘一个最小的正实数,这样不但不影响图形效果,而且避免了0作为父母。