本节书摘来自异步社区出版社《MATLAB智能算法超级学习手册》一书中的第1章,第1.2节,作者:MATLAB技术联盟 , 高飞 , 许玢更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.2 矩阵的表示

MATLAB智能算法超级学习手册

矩阵和向量是一样的,用来描述某一个问题的方程组的系数、由方程组的系数和常数构成的方阵。矩阵包括数值矩阵、符号矩阵、特殊矩阵等3种基本样式。

1.2.1 数值矩阵的生成

1.实数矩阵的输入

MATLAB的强大功能之一体现在能直接处理向量或矩阵。前提是用户根据具体的问题输入待处理的向量或矩阵。

一般简单的定义矩阵,可以直接按行方式输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔,且空格个数不限;不同的行用分号(;)分隔。

所有元素处于一个方括号([ ])内。当矩阵是多维(三维以上)的,且方括号内的元素是维数较低的矩阵时,会有多重方括号。

【例1-1】实数矩阵输入实例。

>> T = [11 12 1 2 3 4 5 6 7 8 9 10]

T =

Columns 1 through 11

11  12   1   2   3   4   5   6   7   8   9

Column 12

10

>> X = [2.32 3.43;4.37 5.98]

X =

2.3200  3.4300

4.3700  5.9800

>> va = [1 2 3 4 5]

va =

1   2   3   4   5

>> MB = [1 2 4;2 3 3;5 4 5]

MB =

1   2   4

2   3   3

5   4   5

>> Null = [ ]      %生成一个空矩阵

Null =

[]

2.复数矩阵的输入

复数在现行的控制工程以及复平面计算中应用较多。复数矩阵是指带有虚数的数值矩阵。复数矩阵的生成方式如例1-2和例1-3所示。

【例1-2】复数矩阵输入方式一实例。

>> a=1.7;b=3/25;

C=[1,3*a+i*b,b*sqrt(a); sin(pi/5),a+7*b,3.9+1]

C =

1.0000       5.1000 + 0.1200i  0.1565

0.5878       2.5400       4.9000

【例1-3】复数矩阵输入方式二实例。

>> R=[1 2 3;4 5 6], M=[11 12 13;14 15 16]

R =

1   2   3

4   5   6

M =

11  12  13

14  15  16

>> RM=R+i*M

RM =

1.0000 +11.0000i  2.0000 +12.0000i  3.0000 +13.0000i

4.0000 +14.0000i  5.0000 +15.0000i  6.0000 +16.0000i

1.2.2 符号矩阵的生成

在MATLAB中输入符号向量或者矩阵的方法和输入数值向量或者矩阵在形式上很相似,只不过要用到符号矩阵定义函数sym,或者是用到符号定义函数syms。先定义一些必要的符号变量,再像定义普通矩阵一样输入符号矩阵。

1.用命令sym定义矩阵

这时的函数sym实际上在定义一个符号表达式,符号矩阵中的元素可以是任何符号或者表达式,而且长度没有限制,只是将方括号置于用于创建符号表达式的单引号中。

【例1-4】用命令sym定义矩阵实例。

>> sym_m = sym('[a b c;Jack,Help Me!,NO WAY!]')

sym_m =

[  a,  b,       c, 0,       0]

[ Jack, Help, factorial(Me), NO, factorial(WAY)]

>> sym_d = sym('[1 2 3;a b c;sin(x) cos(y) tan(z)]')

sym_d =

[   1,   2,   3]

[   a,   b,   c]

[ sin(x), cos(y), tan(z)]

2.用命令syms定义矩阵

先定义矩阵中的每一个元素为一个符号变量,然后如数值矩阵操作那样输入符号矩阵。

【例1-5】用命令syms定义矩阵实例。

>> syms a b c

>> M1 = sym('Classical');

>> M2 = sym('Claysw');

>> M3 = sym('yellow');

>> yswM123=[a,b,c;M1,M2,M3;2,3,5;5,4,6]

yswM123 =

[     a,   b,   c]

[ Classical, Claysw, yellow]

[     2,   3,   5]

[     5,   4,   6]

3.把数值矩阵转化成相应的符号矩阵

数值型和符号型在MATLAB中是不相同的,它们之间不能直接进行转化。MATLAB提供了一个将数值型转化成符号型的命令,即sym。

【例1-6】数值型转化成符号型实例。

>> Digit_Ma = [1/3 sqrt(3) 3.1;exp(0.3) log(10) 23^.5]

Syms_Ma = sym(Digit_Ma)

Digit_Ma =

0.3333  1.7321  3.1000

1.3499  2.3026  4.7958

Syms_Ma =

[                1/3,             3^(1/2),  31/10]

[ 3039611811401035/2251799813685248, 2592480341699211/1125899906842624, 23^(1/2)]

注意:

思考矩阵是用分数形式还是浮点形式表示的。一般情况下,矩阵是以浮点型变量保存的。针对本例,矩阵转化成符号矩阵后以最接近原值的有理数形式或者函数形式表示。

1.2.3 特殊矩阵的生成

(1)全零阵

函数 zeros

格式 B = zeros(n)      %生成n×n全零阵

B = zeros(m,n)     %生成m×n全零阵

B = zeros([m n])    %生成m×n全零阵

B = zeros(d1,d2,d3…)   %生成d1×d2×d3×…全零阵或数组

B = zeros([d1 d2 d3…])   %生成d1×d2×d3…全零阵或数组

B = zeros(size(A))     %生成与矩阵_A_大小相同的全零阵

(2)单位阵

函数 eye

格式 Y = eye(n)      %生成n×n单位阵

Y = eye(m,n)     %生成m×n单位阵

Y = eye(size(A))    %生成与矩阵A大小相同的单位阵

(3)全1阵

函数 ones

格式 Y = ones(n)       %生成n×n全1阵

Y = ones(m,n)      %生成m×n全1阵

Y = ones([m n])     %生成m×n全1阵

Y = ones(d1,d2,d3…)   %生成d1×d2×d3…全1阵或数组

Y = ones([d1 d2 d3…])   %生成d1×d2×d3…全1阵或数组

Y = ones(size(A))     %生成与矩阵_A_大小相同的全1阵

(4)均匀分布随机矩阵

函数 rand

格式 Y = rand(n)     %生成n×n随机矩阵,其元素在(0,1)内

Y = rand(m,n)    %生成m×n随机矩阵

Y = rand([m n])     %生成m×n随机矩阵

Y = rand(m,n,p,…)  %生成m×n×p×…随机矩阵或数组

Y = rand([m n p…])  %生成m×n×p×…随机矩阵或数组

Y = rand(size(A))   %生成与矩阵A大小相同的随机矩阵

rand        %无变量输入时只产生一个随机数

s = rand('state')      %产生包括均匀发生器当前状态的35个元素的向量

rand('state', s)      %使状态重置为s

rand('state', 0)      %重置发生器到初始状态

rand('state', j)       %对整数j重置发生器到第j个状态

rand('state', sum (100*clock)) %每次重置到不同状态

(5)正态分布随机矩阵

函数 randn

格式 Y = randn(n)    %生成n×n正态分布随机矩阵

Y = randn(m,n)      %生成_m×n正态分布随机矩阵

Y = randn([m n])      %生成m×n正态分布随机矩阵

Y = randn(m,n,p,…)    %生成m×n×p×…正态分布随机矩阵或数组

Y = randn([m n p…])   %生成m×n×p×…正态分布随机矩阵或数组

Y = randn(size(A))     %生成与矩阵A大小相同的正态分布随机矩阵

randn        %无变量输入时只产生一个正态分布随机数

s = randn('state')     %产生包括正态发生器当前状态的2个元素的向量

s = randn('state', s)  %重置状态为s

s = randn('state', 0)     %重置发生器为初始状态

s = randn('state', j)    %对于整数j重置状态到第j个状态

s = randn('state', sum(100*clock))  %每次重置到不同状态

(6)产生随机排列

函数 randperm

格式 p = randperm(n)   %产生1~n之间整数的随机排列

(7)产生线性等分向量函数linspace

格式 y = linspace(a,b)    %在(a,b)上产生100个线性等分点

y = linspace(a,b,n)     %在(a,b)上产生n个线性等分点

(8)产生对数等分向量

函数 logspace

格式 y = logspace(a,b)   %在(10a,10b)之间产生50个对数等分向量

y = logspace(a,b,n)     %在(10a,10b)上产生_n_个对数等分向量

y = logspace(a,pi) %在(10a,π)上产生50个对数等分向量

(9)计算矩阵中元素个数

函数 numel

格式 n = numel(a)   %返回矩阵A中元素的个数

(10)产生以输入元素为对角线元素的矩阵

函数 blkdiag

格式 out = blkdiag(a,b,c,d,…)  %产生以a,b,c,d,…为对角线元素的矩阵

(11)友矩阵

函数 compan

格式 A = compan(u) %u为多项式系统向量,A为友矩阵,A的第1行元素为-u(2:n)/u(1),其中u(2:n)为u的第2到n个元素,A的特征值就是多项式的特征根

(12)Hadamard矩阵

函数 hadamard

格式 H = hadamard(n) %返回n阶Hadamard矩阵

(13)hankel方阵

函数 hankel

格式 H = hankel(c)  %第1列元素为c,反三角以下元素为0

H = hankel(c,r)  %第1列元素为c,最后一行元素为r。如果c的最后一个元素与r的第一个元素不同,交叉位置的元素取为c的最后一个元素

(14)Hilbert矩阵

函数 hilb

格式 H = hilb(n)    %返回n阶Hilbert矩阵,其元素为H(i,j)=1/(i+j-1)。

(15)逆Hilbert矩阵

函数 invhilb

格式 H = invhilb(n) %产生n阶逆Hilbert矩阵

(16)Magic(魔方)矩阵

函数 magic

格式 M = magic(n)  %产生n阶魔方矩阵

(17)Pascal矩阵

函数 pascal

格式 A = pascal(n)  %产生n阶Pascal矩阵。它是对称正定矩阵,元素由Pascal三角组成。它的逆矩阵的所有元素都是整数

A = pascal(n,1) %返回由下三角的Cholesky系数组成的Pascal矩阵

A = pascal(n,2) %返回pascal(n,1)的转置和交换的形式

(18)托普利兹矩阵

函数 toeplitz

格式 T = toeplitz(c,r)  %生成一个非对称的托普利兹矩阵,将c作为第1列,将r作为第1 行,其余元素与左上角相邻元素相等

T = toeplitz(r)   %用向量r生成一个对称的托普利兹矩阵

(19)Wilkinson特征值测试阵

函数 wilkinson

格式 W = wilkinson(n) %返回n阶Wilkinson特征值测试阵

matlab logspace 虚数,《MATLAB智能算法超级学习手册》一一1.2 矩阵的表示相关推荐

  1. matlab中存档算法代码,MATLAB 智能算法超级学习手册中程序代码

    [实例简介] MATLAB 智能算法超级学习手册中程序代码 [实例截图] [核心代码] dc90ef43-7920-434e-bdb8-0636c31c0b44 └── MATLAB 智能算法超级学习 ...

  2. 《MATLAB智能算法超级学习手册》一一1.3 符号变量的应用

    本节书摘来自异步社区出版社<MATLAB智能算法超级学习手册>一书中的第1章,第1.3节,作者:MATLAB技术联盟 , 高飞 , 许玢更多章节内容可以访问云栖社区"异步社区&q ...

  3. matlab智能算法超级学习手册 pdf,MATLAB智能算法超级学习手册

    [实例简介] 高飞作者书,MATLAB智能算法超级学习手册源码.通过此书的学习,加上对代码的阅读调试,能够更好的对算法理解. [实例截图] [核心代码] MATLAB智能算法超级学习手册-程序代码 └ ...

  4. 《MATLAB智能算法超级学习手册》一一2.2 种群竞争模型的讨论

    本节书摘来自异步社区出版社<MATLAB智能算法超级学习手册>一书中的第2章,第2.2节,作者:MATLAB技术联盟 , 高飞 , 许玢更多章节内容可以访问云栖社区"异步社区&q ...

  5. 《MATLAB R2012a超级学习手册》一2.5 本章小结

    本节书摘来自异步社区<MATLAB R2012a超级学习手册>一书中的第2章,第2.5节,作者 史洁玉 , 孔玲军,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  6. matlab中udt函数,《MATLAB信号处理超级学习手册》——2.5 离散时间信号中的运算...

    本节书摘来自异步社区<MATLAB信号处理超级学习手册>一书中的第2章,第2.5节,作者:MATLAB技术联盟 , 史洁玉著,更多章节内容可以访问云栖社区"异步社区"公 ...

  7. 《MATLAB图像处理超级学习手册》导读

    前言 MATLAB图像处理超级学习手册 图像是人类获取信息的重要来源.当今的信息化社会,对图像处理和图像分析的要求越来越高,现有的图像软件由于采购成本和功能的限制,已经不能完全满足专业人士的需要,这时 ...

  8. matlab图像处理创建项目,《MATLAB图像处理超级学习手册》一一2.1 矩阵的创建

    本节书摘来自异步社区出版社<MATLAB图像处理超级学习手册>一书中的第2章,第2.1节,作者:MATLAB技术联盟 , 张岩 更多章节内容可以访问云栖社区"异步社区" ...

  9. 《MATLAB信号处理超级学习手册》——2.7 本章小结

    本节书摘来自异步社区<MATLAB信号处理超级学习手册>一书中的第2章,第2.7节,作者:MATLAB技术联盟 , 史洁玉著,更多章节内容可以访问云栖社区"异步社区"公 ...

  10. 《MATLAB R2012a超级学习手册》一第1章 MATLAB概述

    本节书摘来自异步社区<MATLAB R2012a超级学习手册>一书中的第1章,作者 史洁玉 , 孔玲军,更多章节内容可以访问云栖社区"异步社区"公众号查看 第1章 MA ...

最新文章

  1. java类的注释模板_IDEA添加Java类注释模版的方法
  2. 关于 CPU 的一些基本知识总结
  3. 对accuracy、precision、recall、F1-score、ROC-AUC、PRC-AUC的一些理解
  4. java项目中使用的jar包出错怎么办
  5. 机器学习算法总结--SVM
  6. 为什么引入Memcached?
  7. free mybatis 不生效_这些Mybatis-Plus的使用小技巧,你应该知道的!
  8. cron和crontab_Linux crontab命令创建和管理Cron作业
  9. MTR和WinMTR的下载和使用
  10. 关于latex第四级标题问题
  11. HTML5+CSS3小实例:炫彩流光圆环加载动画
  12. 英特尔cpu与主板芯片组对应关系(包含12代)
  13. selenium2 WebDriver 在asp.net项目中的应用
  14. python 实现实时语音对讲
  15. dell服务器新bois系统设置u盘启动,戴尔新版本的bios怎样设置U盘启动
  16. 量产无人车?Waymo将在 底特律建厂并大规模生产自动驾驶出租车
  17. 基于GMM模型的图像分割与颜色迁移算法
  18. 让你永远忘不了的傅里叶变换解析
  19. Android 性能优化探究,不愧是Alibaba技术官
  20. 程序员面试的奇葩问题

热门文章

  1. 【旧文章搬运】暴力的查进程方法
  2. 键盘输入123456789c语言,Python:键盘输入input
  3. 当电脑硬盘坏道出现时,如何屏蔽
  4. 微信公众号素材html,微信公众号运营必备:10个免费高清图片素材网站
  5. 狼图腾--满族为什么能以少统多
  6. 雷达一维距离像怎么用matlab仿真出来,雷达目标识别之一维距离像的学习
  7. restore和recover区别
  8. specification jpa 复杂查询
  9. 30 个 Python 教程和技巧
  10. 谷歌账号Gmail邮箱修改密码提示需要手机设备验证码如何处理