当前位置:
文档之家› 第3章MATLAB的数值运算与符号运算
第3章MATLAB的数值运算与符号运算
矩阵的除法分为A\B和A/B, X A\ B 一般来说, 是方程A * X B 的解,且
A \ B A1 * B
3.2.1 算术运算
注:例11
8 x1 x2 6 x3 1 3 x1 5 x2 7 x3 2 4 x 9 x 2 x 3 2 3 1
MATLAB 与控制系统仿真
第3 章 MATLAB的数值运算与符号运算
主要内容
3.1 数组与矩阵的基本操作
3.1.1 数组与矩阵的输入 3.1.2 数组与矩阵的元素操作 3.1.3 数组与矩阵的输出 3.2.1 3.2.2 3.2.3 3.2.4 算术运算 关系运算 逻辑运算 运算优先级
MATLAB还提供了大量函数用于逻辑判断, 可以通过“is*”搜索MATLAB帮助文档查 询更多的状态测试函数及其帮助。
注:状态测试函数及其帮助文档导读
3.2.3 逻辑运算
注:例16 >> A=[1 0 2;3 0 5] >> B=[2 6 1; 0 0 8] >> A&B >> A|B >> ~A >> xor(A,B) 进行数组逻辑运算。
A为方阵,B为非整数
A为标量,B为方阵
将A分解为A=W*D/W,D为对角阵,A^B=W*D ^B/W
A的B次幂,将A分解为A=W*D/W,D为对角阵, A^B=W*diag(D.^B)/W
A、B均为矩阵
错误
3.2.1 算术运算
数组乘方
注:例12
>> A=magic(3); >> B=2; >> C=A^B
3.1.1 数组与矩阵的输入
快捷方式输入矩阵或数组
增量式输入 通过把小矩阵扩展成为大矩阵而输入。
注:例2 >> a=1:5 >> b=pi:-pi/4:0 >> CC=[C' C'] >> C(3,4)=10 以快捷方式输入矩阵或数组。
3.1.1 数组与矩阵的输入
通过提示语句输入矩阵或数组
x = input(‘prompt’),或 x= input('prompt','s') 在屏幕上显示一个提示符,等待用户从键盘输入,并读取用户输入 到工作空间中。 第一种方式供输入数字,而后一种方式供输入字符串。
注:例3
>> yourName=input('请输入您的姓名:\n','s') >> yourAge=input('请输入您的年龄:')
C (i, j ) A(i, k )B(k , j )
k 1
n
3.2.1 算术运算
注:例10 >> D=A*C >> D1=A.*C 接例9,进行两个矩阵或数组相乘。
3.2.1 算术运算
矩阵/数组的除法运算 数组的除法分为A./B即 A(i, j ) / B(i, j ) A.\B,即 B(i, j ) / A(i, j )
3.2.3 逻辑运算
逻辑运算符对进行比较的两个数组A和B进 行逻辑运算。 非零元素表示真(1),0元素表示假(0)。 逻辑运算返回值为一个与A和B维数相同的 数组。当A和B相应位置进行逻辑运算的结 果为真时,结果数组的相同位置置1,否则 置0。 A和B可以是标量。
3.2.3 逻辑运算
注:例14 >> A=magic(3) >> A' >> B=i*eye(3) >> C=(A+B)‘ >> C=(A+B).' 进行矩阵/数组的转置运算。
3.2.2 关系运算
关系运算符对比较的两个数组A和B进行关系运算。 返回值为一个与A和B维数相同的数组。当A和B相应位 置进行关系运算的结果为真时,结果数组的相应位置 置1,否则置0。A和B可以是标量。 注:例15 >> A=magic(3) >> B=[3 4 5;6 9 7;1 8 2] >> A>=B >> A~=B 进行数组的/数组的加减运算 矩阵与数组的加减运算规则相同,运算符也完全 相同。
注:例9 >> A=magic(3) >> B=eye(3) >> C=A+B 求两个矩阵的和。
3.2.1 算术运算
矩阵/数组的乘法运算 数组相乘是对应元素的相乘,这与矩阵相 乘是不同的。矩阵A、B相乘要求A的列数 和B的行数相等,除非其中一项是标量。 矩阵相乘可表示为:
3.2.4 运算优先级
(7)小于 (<), 小于等于 (<=),大于 (>), 大于等于 (>=),等于 (= =), 不等 (~=) (8)与 (&) (9)或 (|) (10)先决与,Short-circuit AND(&&) (11)先决或,Short-circuit OR (||)
注:例8 >> clear >> a = [2 4 6 5]; b = ones(4, 4) * 3; c =magic(4); >> save mydat >> clear >> load mydat >> whos 保存整个工作空间。
3.2 MATLAB的基本数学运算
load -ascii filename load -mat filename
%加载ascii码数据文件 %加载二进制数据文件
3.1.1 数组与矩阵的输入
注:例5 >> load -ascii mydata.dat >> mydata
设从其它程序产生了ascii码数据文件。将其保 存在当前工作路径下,名为mydata.dat。通过 文件加载的方式将其导入工作空间。
3.1.1 数组与矩阵的输入
y = linspace(a,b) y = linspace(a,b,n) 产生线性分布的向量,位于a ~ b 之间共100个点值 产生线性分布的向量,位于a ~ b 之间共n个点值
y = logspace(a,b)
y = logspace(a,b,n)
产生对数分布的向量,位于10^a ~10^b之间共50个点值 产生对数分布的向量,位于10^a ~10^b之间共n个点值
3.1.3 数组与矩阵的输出
注:例7 >> clear >> a = [2 4 6 5]; b = ones(4, 4) * 3; c =magic(4); >> save -ascii mydat.dat >> clear >> load -ascii mydat.dat >> mydat 将变量保存为数据文件。
3.1.2 数组与矩阵的元素操作
数组/矩阵元素的操作主要有提取(部分) 元素、修改或赋值给(部分)元素值、 删除(部分)元素及数组/矩阵的翻转等。 MATLAB提供了数组/矩阵翻转的函数。
操作数组/矩阵的MATLAB函数
B = rot90(A) 矩阵逆 时针旋 转90° 矩阵上 下翻转 矩阵左 右翻转 矩阵的 某维元 素翻转 B = shiftdim(X,n) U = triu(X) L = tril(X) 矩阵的元素 移位 得到矩阵的 上三角矩阵 得到矩阵的 下三角矩阵
例17
给出程序判断用户是否输入了非空字符串,如果输入则打印出来。
3.2.4 运算优先级
正如其它高级程序设计语言一样,对不 同运算符,MATLAB设定了运算符的优先 级(Operator Precedence)。 以下同一优先级,程序遵循先左后右执 行;优先级不同时,先高级后低级执行。
3.2.4 运算优先级
3.1.3 数组与矩阵的输出
一般地,在命令窗口输入的函数语句执 行完毕后,即在工作空间产生其运行结 果。将来可以在命令窗口输入变量名查 看该变量值,也可以直接在工作空间中 打开进行查看或编辑。 如果用户需要将其保存到文件中,一是 可以保存整个工作空间,一是可以将变 量保存为数据文件,供将来调用。
3.1.1 数组与矩阵的输入
Y Y Y Y = = = = rand rand(n) rand(m,n) rand(size(A))
)
Y = randn( M = magic(n)
产生一个随机数 产生n*n维平均分布的随机矩阵 产生m*n维平均分布的随机矩阵 产生与矩阵A同维数的平均分布随机 矩阵 类似于Y = rand( ),各数值遵循 正态分布规律 产生n*n维的魔方矩阵,要求n≥3
已知方程组
用矩阵除法求解。 >> A =[8 1 6; 3 5 7; 4 9 2]; >> B=[1 2 3]'; >> X=A\B
3.2.1 算术运算
矩阵/数组的乘方运算 矩阵乘方A^B有各种运算情况
A自乘B次,即A的B次幂 A-1自乘|B|次,仅对非奇异阵成立
A为方阵,B为大于1的 整数 A为方阵,B为负整数
B = flipud(A) B = fliplr(A) B = flipdim(A,dim)
3.1.2 数组与矩阵的元素操作
注:例6: >> A=magic(3) >> a22=A(2,2) >> A1=A(1:2:3,[2,3]) >> A2=A(:,2:end) >> A5=A; >> A5(:,3)=[] >> A6=rot90(A) 对数组/矩阵的元素操作。