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 bank2位十进制格式
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

>> 

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

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值