该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

MATLAB既然以矩阵实验室命名,就说明该软件在矩阵计算方面具有非常优异的表现。在MATLAB中,一般情况下一个矩阵就是指一个长方形的数组。特殊情况有两个,一是单一元素的标量,二是只有一行或者一列的矩阵,也就是向量。MATLAB也有其他储存数值和非数值数据的方式,但是对于初学者来说,最好是将所有的情况都考虑为矩阵,这样更容易使用。MATLAB的设计理念是所有的操作尽可能的自然。其他编程语言在处理数据的过程中,每次只能处理一个数值,而MATLAB则允许用户快速方便地采用矩阵来操作。

1.矩阵的创建与组合

MATLAB最基本的数据结构就是矩阵,一个二维的、长方形形状的数据,可以用易于使用的矩阵形式来储存,这些数据可以是数字、字符、逻辑状态(true或者false),甚至是MATLAB的结构数组类型。MATLAB使用二维的矩阵来储存单个数值或者线性数列。MATLAB同时支持多于二维的数据结构。

1.1创建简单矩阵

MATLAB是基于矩阵的计算环境。所有用户输入的数据都将会以矩阵的形式或者多维数组来储存。即使是一个数值型的标量,比如说100,都会以矩阵的形式来储存。

【例2-1】 单个标量的输入示例。

>> A = 100; % 输入数值A

>> whos % whos命令可以用来查看Workspace中所存储的变量信息

Name Size Bytes Class Attributes

A 1x1 8 double

从本例可以看出,标量A的存储格式为1×1的矩阵,它占用了8个字节的内存空间,数据的类型是双精度浮点数。

创建MATLAB矩阵最简单的方式是使用MATLAB的矩阵构建标识符,即方括号[]。创建一个行向量只需要在中括号里面输入相应的元素,并用空格或者逗号作为分隔符分隔相邻的元素即可。

>> row = [E1, E2, ..., En]

>> row = [E1 E2 ... En]

如果要在矩阵中输入下一行,用分号作为行之间的分隔符即可:

>>A = [row1; row2; ...; rown]

例如创建一个包括5个元素的单行矩阵,可以在命令行中输入下面的命令:

>> A = [12 62 93 -8 22];

【例2-2】 创建2~20区间内以2为步长的向量。

在MATLAB中可以通过“初值:步长:终值”的方式创立向量。本例中可以在命令窗口中输入:

>>a=2:2:20

按回车键,在命令窗口显示为:

a =

2 4 6 8 10 12 14 16 18 20

需要指出的是:步长可以为正数、负数或者小数。若用户不指定表达式中的步长一项,MATLAB则默认步长为1。例如:

>> b=1:10

b =

1 2 3 4 5 6 7 8 9 10

另外如果用户指定的区间并不是步长的整数倍,那么将以初值为准,依次加上步长来产生序列,正如下面的c中所示。

>> c=3:5:15

c =

3 8 13

【例2-3】 举例说明如何创建一个3行5列的矩阵。需要指出的是:在矩阵的输入过程中,矩阵的每一行必须有同样多的元素个数。

>> A = [12 62 93 -8 22; 16 2 87 43 91; -4 17-72 95 6]

A =

12 62 93 -8 22

16 2 87 43 91

-4 17 -72 95 6

方括号标识符只能创建二维矩阵,包括0´0、1´1、1´n、m´n等类型。如果要创建多维矩阵,请继续关注公号文章。而如果需要读取和赋值矩阵中的某些元素,也请继续关注。

在将一个带正负号的数值输入矩阵的时候要注意,符号后面要紧接着数值,两者之间不要有空格。通过下面的比较可以看出有哪些不同。

【例2-4】 矩阵中带符号的数值输入示例。

下面两个在运算表达式中的例子说明,符号与数值之间是否有空格并不影响计算的结果。

>> 7 -2 +5

ans =

10

>> 7 - 2 +5

ans =

10

但是下面的两个例子则说明,在矩阵的输入过程中如果符号与数值之间有空格,那么其结果是不同的。读者在这方面一定要注意,以免导致计算结果错误。

>> [7 - 2 + 5]

ans =

10

>> [7 -2 +5]

ans =

7 -2 5

1.2 创建特殊矩阵

MATLAB内嵌有很多函数,可以直接用来创建不同的特殊矩阵。比如创建汉克尔矩阵和范德蒙德矩阵。表2-1中列出了一些常用的特殊矩阵的创建函数。这里需要再次强调一下,函数名称对于大小写是敏感的,在MATLAB中函数名称一般是全部小写的,如果转换了其中一个字母的大小写那么可能调用的就是另一个函数或者会发生调用错误。

表2-1 常用特殊矩阵的创建函数

函数名称 函数功能 函数名称 函数功能

zeros 产生一个所有元素为零的矩阵 pascal 生成PASCAL矩阵

diag 产生一个对角矩阵 rand 随机产生均匀分布的矩阵

ones 生成所有元素全为1的矩阵 randn 随机产生正态分布的矩阵

eye 生成单位矩阵 randperm 产生一个由指定整数元素随机分布构成的矩阵

magic 生成魔方矩阵

【例2-5】 特殊矩阵创建函数示例。

>> ones(4) % 创建所有元素为1的矩阵

ans =

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

>> eye(5) % 创建单位矩阵

ans =

1 0 0 0 0

0 1 0 0 0

0 0 1 0 0

0 0 0 1 0

0 0 0 0 1

>> rand(2,3) % 创建2´3的均匀分布随机数矩阵

ans =

0.8147 0.1270 0.6324

0.9058 0.9134 0.0975

>> randperm(7) % 创建由1∶7构成的随机数列

ans =

5 1 2 7 3 4 6

需要指出的是:每次运行随机函数都会得到不同的结果,这是因为默认状态下随机数的种子都不同。这也是随机数的意义所在。若要用函数产生相同的矩阵以验证操作的结果,可以按如下方法设置随机种子状态:

>>rand('state', 0);

>> randperm(7)

ans =

2 7 4 3 6 5 1

通过如此设置,读者就可以得到和本书中相同的结果。

1.3 矩阵的合并

矩阵的合并是指将两个或者多个矩阵合并到一起构成一个新的矩阵。前面提到的矩阵标识符方括号[],不仅可以用来创建新的矩阵,还可以用来将若干个矩阵合并到一起。

表达式C = [A B]将矩阵A和B在水平方向上合并到一起,而表达式C = [A; B]则将矩阵A和B在竖直方向上合并到一起。

【例2-6】 求矩阵A和B在竖直方向上合并到一起后得到的矩阵C。

>> rand('state', 0); % 设置随机种子,便于读者验证

>> A = ones(2, 5) * 6; % 元素全部为6的2´5矩阵

>> B = rand(3, 5); % 3´5 的随机数矩阵

>> C = [A; B]

C =

6.0000 6.0000 6.0000 6.0000 6.0000

6.0000 6.0000 6.0000 6.0000 6.0000

0.9501 0.4860 0.4565 0.4447 0.9218

0.2311 0.8913 0.0185 0.6154 0.7382

0.6068 0.7621 0.8214 0.7919 0.1763

需要指出的是:在矩阵的合并过程中要保持新生成的矩阵为长方形,否则MATLAB将会报错。也就是说,如果要在水平方向上合并矩阵,那么每个子矩阵的行数必须相同;如果要在竖直方向上合并矩阵,那么每个子矩阵的列数必须相同。

如图2-1所示,图中具有相同行数的矩阵可以水平合并,而行数不同的矩阵是不能水平合并的。

matlab 数组 组成 矩阵,MATLAB矩阵与数组相关推荐

  1. Matlab矩阵、元胞数组的合并拼接

    矩阵合并拼接 1.横向拼接 [a,b] [a b]均可 例1 >> a=magic(3)a =8 1 63 5 74 9 2>> b=rand(3)b =0.6324 0.54 ...

  2. matlab三维数组与二维矩阵相乘问题

    Matlab三维数组与二维矩阵相乘问题 近来在搞一个改进近场music算法的仿真问题,用matlab进行二维搜索的时候写了很多for循环,导致运行速度极慢.考虑到matlab语言本身的矩阵运算特点,改 ...

  3. Matlab与信号处理(一):数组与矩阵

    目录 一.数组 1.数组的创建: (1)用方括号创建: (2)用冒号创建: (3) 用函数创建: 2.数组的算术运算: (1)数组乘法: (2)数组除法: (3)数组幂运算: 二.矩阵: 1.矩阵的创 ...

  4. 理工科毕业设计献礼,MATLAB从入门到精通之矩阵是如何实现寻访与赋值的

    前言 以下是博主精心整理的两个matlab专栏,包含入门到精通及实战内容,需要的小伙伴可根据自己需求自行订阅. MATLAB-30天带你从入门到精通 https://blog.csdn.net/wen ...

  5. 二维数组离散程度matlab,(十八)数据分析中的一些概念

    (十八)数据分析中的一些概念 HIKAI 29 SEP 2017 0 Comments 矢量.向量.标量 矢量和向量是一个东西,只是在不同领域里面用到的不同称呼.矢量常常用在物理学中,向量在数学.几何 ...

  6. matlab max与min获取矩阵最大最小值函数

    1.matlab中Max的用法1(Min类似) Matlab中max函数在矩阵中求函数大小的实例如下: C = max(A) 1)返回一个数组各不同维中的最大元素. 2)如果A是一个向量,max(A) ...

  7. matlab单元数组和结构,Matlab使用单元数组和结构数组

    Matlab使用字符串数组.单元数组(cell array)和结构数组 (struct array) 要在MALTAB中实现比较复杂的编程,就不能不用单元数组(cell array)和结构数组(str ...

  8. matlab单元数组和结构,Matlab中单元数组和结构数组

    前言: 单元数组和结构数组是一种新的数据类型,能将不同类型.不同维数的数组组合在一起,从而方便对不同的数据类型方便管理和维护. 如上图所示的2*2矩阵中,分别存储着四种不同的数据类型,分别为数组.字符 ...

  9. matlab mex 矩阵,如何从mex函数访问matlab结构字段中的矩阵?

    如何从mex函数访问matlab结构字段中的矩阵? 我试图弄清楚如何从mex函数访问存储在matlab结构中的字段中的矩阵. 那真是漫长的缠绕...让我解释一下: 我有一个定义如下的matlab结构: ...

最新文章

  1. 深入理解Java中的final关键字
  2. 模板类中使用友元函数的方式,派生类友元函数对基类的成员使用情况
  3. Linux 下安装配置redis
  4. cowboy源码分析
  5. 两个网口芯片接一个变压器_一看就会:详细讲解网络变压器作用
  6. python画3d图-Python 竟能绘制如此酷炫的三维图
  7. cloudera-scm-service 已死,但 pid 文件存在的解决办法
  8. Google Map Web服务API
  9. NEAT(基于NEAT-Python模块)实现监督学习和强化学习
  10. Unity Shader - GrabPass 实现武器热扭曲拖尾效果
  11. 决胜5G新战场,联通沃云全新战略重磅发布
  12. python3爬虫伪装代理IP
  13. android google 登录登出接入
  14. 易基因|3文聚焦:宏病毒组测序在肠病中的应用研究
  15. K8S使用ceph-csi持久化存储之cephfs部署验证快照
  16. CCNA中文笔记第11章Wide Area Networking Protocols
  17. 控制系统仿真技术(一)仿真软件-MATLAB
  18. vue展示信息卡片_vue 个人中心会员卡片组件
  19. 最优停止理论 Optimal Stopping Theory 经典秘书问题 Classic Secretary Problem
  20. mini车f和r的区别_f800r(宝马f800r的f和r是什么意思?)

热门文章

  1. 孙悟空:越风光,越可怜
  2. 招标服务费计算小程序(2022-2-10)重写
  3. 路由器设置密码-密码破解-数据备份(cisco)
  4. Day5 快速输入数据的方法
  5. webmatrix mysql_WebMatrix PHP MySQL
  6. 从服务上下载下的日志文件,用UltraEdit打开时中文是乱码解决方法
  7. 角色权限分配与路由配置
  8. 利用栈实现十进制对二进制,八进制、十六进制的任意转换(N进制)
  9. Silent Code 黑客及其它
  10. vue input 框限制上传文件,或者限制上传图片,或者两个都可以上传