MATLAB基础学习(一)——计算基础

参考文献《MATLAB语言常用算法程序集合》


MATLAB数值类型

1.变量与常量

(1)变量:是数值计算的基本单元,变量名字区分大小写。

  • 任何MATLAB语句的执行结果都可以显示在屏幕上,同时赋值给指定的变量,没有指定变量时,赋值给一个特殊的变量ans
  • MATLAB总以双精度浮点数来执行所有的运算结果。
  • 可以使用format命令控制数据的显示格式,format只影响结果的显示,不影响计算与存储。format使用见下表。
名称 说明
format short 短格式(5位定点数)
format long 长格式(15位定点数)
format short e 短格式e方法
format long e 长格式e方法
format bank 2位十进制格式
format short e 十六进制格式

测试一下

>> format short 
>> test = 12.3

test =

   12.3000

>> format long
>> test = 12.3

test =

  12.300000000000001

>> 

由测试结果显示可知:short显示的是4位小数而不是5位,与参考书有出处,具体原因仍待考证。目前以实际测量为准。


(2)常量:指在MATLAB中已经预先定义其数值的变量。MATLAB默认常量见下表。

名称 说明
pi 圆周率
inf 无穷大
NaN(或者nan) 代表不定值(0/0)
realmax 最大正实数
realmix 最小正实数
eps 浮点数的相对误差
i(或者j) 虚数单位
nargin 函数实际输入参数个数
nargout 函数实际输出参数个数
ans 默认变量名,以应答最近一次操作运算结果


2.字符串

字符串作为字符数组用单引号' ' 引用到程序中。


3.元胞数组

元胞是元胞数组的基本组成部分。元胞可以存放任何类型任何大小的数组,而且同一个元胞数组中各元胞的内容可以不同。
使用花括号{ } 表示元胞数组的内容,使用圆括号() 表示元胞元素。
使用celldisp函数可以显示元胞数组。

>> a = {'字符串',100,ones(2,3)}

a = 

    '字符串'    [100]    [2x3 double]

>> 

上述元胞数组包括了一个字符串、一个常量100、一个2*3的矩阵

>> celldisp(a)

a{1} =

字符串


a{2} =

   100



a{3} =

     1     1     1
     1     1     1


>> 

可以使用celldisp函数查看数组内容


4.构架数组

构架数组也能存放各类数据,使用指针的方式传递数值,使用. 操作符连接结构变量名和属性名,例如使用parameter.temperature 表示某一个对象的温度参数,使用parameter.humidity 表示这个对象的湿度参数等。
因此该构架数组由两个属性组成。


5.对象

面向对象的MTALAB语言采用了多种对象,如自动控制中常用到的,传递函数模型对象(tf object)、状态空间模型对象(ss object),零极点模型对象(zpk object)


MATLAB矩阵计算

1.建立矩阵

矩阵以左方括号[开始,以右方括号]结束,每一行元素用分号; 分割,每行中每个元素用空格或者 分割。

>> a = [1,2,3;4,5,6]

a =

     1     2     3
     4     5     6

>> b = [1 2;3 4]

b =

     1     2
     3     4

>> 


继续输入


>> c = [a;7,8,9]

c =

     1     2     3
     4     5     6
     7     8     9

可以看到,在原来矩阵基础上加一行,得到新矩阵c


2.访问矩阵


- 单个元素的访问:c(3,2),访问第3行第2列

c =

     1     2     3
     4     5     6
     7     8     9

>> c(3,2)

ans =

     8


- 整列元素的访问:访问第3列元素

>> c(:,3)

ans =

     3
     6
     9 


- 整行元素的访问:访问第1行元素

>> c(1,:)

ans =

     1     2     3



- 整块元素的访问:访问一个(2*2)的1-2行,2-3列组成的子块矩阵

>> c(1:2,2:3)

ans =

     2     3
     5     6


3.常用特殊矩阵生成函数

函数名称 说明
zeros() 生成元素全为0的矩阵
ones() 生成元素全为1的矩阵
rand() 生成均匀分布随机矩阵
randn() 生成正态分布随机矩阵
magic() 生成魔方矩阵
diag() 生成对角矩阵
triu() 生成上三角矩阵
tril() 生成下三角矩阵
eye() 生成单位矩阵
company() 生成伴随矩阵
hilb() 生成Hilbert矩阵
vander() 生成vander矩阵
hankel() 生成hankel矩阵
hadamard() 生成hadamard矩阵


4.常用矩阵函数运算

函数名称 说明
rot90() 矩阵逆时针旋转90度
flipud() 矩阵上下翻转
fliplr() 矩阵左右翻转
flipdim() 矩阵的某维元素翻转
shiftdim() 矩阵的元素移位
eig() 计算矩阵的特征值与特征向量
rank() 计算矩阵的秩
trace() 计算矩阵的迹
norm() 计算矩阵的范数
poly() 计算矩阵的特征方程的根


通过eig()函数计算矩阵a的特征向量b和特征值c

>> a = [1,2,3;4,5,6;7,8,9]

a =

     1     2     3
     4     5     6
     7     8     9

>> [b,c] = eig(a)

b =

   -0.2320   -0.7858    0.4082
   -0.5253   -0.0868   -0.8165
   -0.8187    0.6123    0.4082


c =

   16.1168         0         0
         0   -1.1168         0
         0         0   -0.0000

>> 

5.常用矩阵分解运算函数

函数名称 说明
eig() 矩阵的特征值分解
qr() 矩阵的QR分解
schur() 矩阵的Schur分解
svd() 矩阵的奇异值分解
chol() 矩阵的Cholesky分解
lu() 矩阵的LU分解


通过lu()函数对矩阵a进行LU分解,得到上三角阵U、下三角阵L、置换矩阵P

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

a =

     6     2     1
     2     3     1
     1     1     1

>> [L,U,P] = lu(a)

L =

    1.0000         0         0
    0.3333    1.0000         0
    0.1667    0.2857    1.0000


U =

    6.0000    2.0000    1.0000
         0    2.3333    0.6667
         0         0    0.6429


P =

     1     0     0
     0     1     0
     0     0     1

>> 

如有不对的地方欢迎大家指正交流

你可能感兴趣的:(MATLAB)