第三章 数值数组及向量运算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章 数值数组及向量运算
matlab 具有出色的数值计算 能力,占据世界上数值计算软件的 主导地位。 数值数组和数组运算是 MATLAB的核心内容。
3.1 数值计算的特点和地位
数值计算适合现代计算机的运行特点, 与符号计算相比,它计算速度快、容量 大,能够处理各种复杂的函数关系。
3.1 数值计算的特点和地位

用间距为0.1的水平线和垂直线均匀 分割 x [5,5], y [2.5,2.5] 的矩形域,在所有 水平线和垂直线交点上计算函数的值。
例(非向量化编程)
clear x=-5:0.1:5; y=(-2.5:0.1:2.5)'; N=length(x); M=length(y); for ii=1:M for jj=1:N X0(ii,jj)=x(jj); Y0(ii,jj)=y(ii); Z0(ii,jj)=sin(abs(x(jj)*y(ii))); end end

n
其中 1 , n 为矩阵a的特征值 V为对应的特征向量阵 [V,D]=eig(a) 可计算V和D (5)当p为矩阵时,只有a为标量时才能 计算 a^p,a为矩阵则不能 a^p=V*a.^D*V-1 [V,D]=eig(p)

>>A=[1 2 3 ;2 3 1 ;3 2 1]; >>B=A^2 >>C=A^0 >>D=2^A
2、线性(或对数)定点法 var=linspace(a,b,n) 线性 var=logspace(a,b,n) 对数 说明: a: 起始点 n: 总采样点数
b:终点
B、其它输入方法
(1) 直接输入: a=[1 2 3, 4]
各元素之间用“空格”或“,” (英文状态下) 分开;
(2) 函数生成: rand(1,5), randn(1,5), ones(1,3) ,zeros(1,4)等 (3) 由向量或小矩阵生成:X=[a ; b] (4) 由 数据文件生成 (5) 交互式输入: input
3.0632
从上面的例子看出: 1、进行数值计算必须首先确定一组自变 量采样点。 a、取值区间 b、采样间隔 2、执行数值计算的表达式都是在已知的 数值点上进行的。 3、数值计算结果也是离散的。
3.2 数值数组的创建和寻访
3.2.1 一维数组的创建
A、递增/减型一维数组的创建 1、“冒号”生成法 Var=start:inc:end 说明: Var:为变量 start:起始值 Inc:步长 end: 终值的最大范围值 例:x=4:-1:-3.3 y=1:5 默认inc=1
矩阵和数组的除法
1、矩阵的左除 “\” x=a\b是a*x=b的解,即 a\b= a 1b inv (a) * b 2、矩阵的右除 “/ ” x=b/a是x*a=b的解,即 1 b/a= ba b * inv (a)

1 a 3 2 4 1 x 2 5 b 11 1 x a\b 2
D、利用MATLAB函数创建数组
指令 diag eye magic rand randn 含义 产生对角数组(高维不适用) 产生单位数组(高维不适用) 产生魔方数组(高维不适用) 产生均匀分布随机数组 产生正态分布随机数组
ones
zeros random randsrc gallery
产生全 1 数组
(1)当p为正整数时, a^p表示a自乘p次 (2)当p为负整数时,a^p表示a-1自乘p次 (3)当p=0时, a^p结果为与a同维的单位阵 (4)当p为分数时,计算将涉及到特征值和特征矢量的 问题 a^p=V*D.^p*V-1
D
1
2

tic s=0; for i=1:300000 s=s+1/i; end toc tic s=0; i=1:300000; s=sum(1./i); toc
矩阵和数组的算术运算
MATLAB系统提供的算术运算符如下
加 减 乘 左除 右除 矩阵 + * \ / 数组 + .* .\ ./ 注意:在数组运算过程中,小黑点(“.”)不能省略 其中矩阵转置`为共轭转置。 幂 ^ .^ 转置 ` .`
3.3 数组运算
在数值计算实现的数学模型中,对 离散数据进行处理的函数关系运算分为: 1、个别的,无规律的数据集合所执行 函数关系运算 2、一组有规律数据需要反复执行的函 数关系运算 3、一组有规律数据按照矩阵运算法则 执行的运算
MATLAB针对三种不同类型的函数关 系运算采取如下措施: 1、采用所谓的JIT加速器,提高FOR 循环中标量函数关系运算的措施。 2、采用“数组运算”模式处理那些 借助循环而反复执行的标量运算。 3、采用“向量或矩阵运算”模式去 执行那些传统上靠多重循环标量运算完 成的矩阵运算。
2、数组的幂运算 对其元素逐一进行幂运算 例、>>A=[1 2 3 ;2 3 1 ;3 2 1]; >>B=A.^2 >>C=A.^0 >>D=2.^A
n=input('Please input n: ')3.2.2 Nhomakorabea维数组的创建
A、小规模数组的直接输入
a=[1 2 ; 3, 4]
b=[1 2 3 4 5 6]
同一行中各元素之间用“空格”或“,” (英文状态下) 分开; 行与行之间用 “;” 或“回车”分开
B、中规模数组的数组编辑器法
C、中规模数组的M文件创建法
B、用数值解法 dt=0.05; t=0:dt:4; Ft=exp(-sin(t)); Sx=dt*cumtrapz(Ft); Sx(end) plot(t,Ft,'*r','MarkerSize',4) hold on plot(t,Sx,'.k','MarkerSize',15) hold off xlabel('x') legend('Ft','Sx') ans =
矩阵和数组的加减运算
例 、 >>a=[1 2 3 4]; >>b=[4 3 2 1]; >>c=a+b c= 5 5 5 5
矩阵和数组的乘法
例 、 >>a=[1 1 1;2 2 2;3 3 3]; >>b=a; >>c=a*b c= 6 6 6 12 12 12 18 18 18
矩阵和数组的乘法
或回车分开matlab指令含义diag产生对角数组高维不适用eye产生单位数组高维不适用magic产生魔方数组高维不适用rand产生均匀分布随机数组randn产生正态分布随机数组ones产生全数组zeros产生全数组random生成各种分布随机数组randsrc在指定字符集上生成均布随机数组gallery产生各种用途的测试数组矩阵323格式使用说明全下单下标法确定元素逻辑标识法逻辑1寻访生成一列azeros26a

,其中 r, u, i 分别是电阻(欧姆)、电压(伏特)、 电流(安培)。验证实验:据电阻两端 施加的电压,测量电阻中流过的电流, 然后据测得的电压、电流计算平均电阻 值。(测得的电压电流具体数据见下列 程序)。
u 欧姆定律: r i
例(非向量化运算)
clear vr=[0.89, 1.20, 3.09, 4.27, 3.62, 7.71, 8.99, 7.92, 9.70, 10.41]; ir=[0.028, 0.040, 0.100, 0.145, 0.118, 0.258, 0.299, 0.257, 0.308, 0.345]; % -------------------L=length(vr); for k=1:L r(k)=vr(k)/ir(k); end % --------------------------sr=0; for k=1:L sr=sr+r(k); end rm=sr/L
x=a.\b=b./a均是b中元素分别除 以a中对应的元素,要求a与b必须具有相 同的阶数。 例、>>a=[1 2 3 4 ];b=[2 4 6 8 ]; >>c=a./b (或b.\a) c=0.5 0.5 0.5 0.5 >>d=b./a (或a.\b) d=2 2 2 2
矩阵和数组的幂运算
1、矩阵的幂运算 a^p
矩阵和数组的加减运算
例、 >>a=[1 1 1;2 2 2;3 3 3]; >>b=a; >>c=a+b c= 2 2 2 4 4 4 6 6 6 >>c=a-b c= 0 0 0 0 0 0 0 0 0
矩阵和数组的加减运算
例 、 >>a=[ 1 2 3;4 5 6;7 8 9]; >>c=a+2 c= 3 4 5 6 7 8 9 10 11
产生全 0 数组 生成各种分布随机数组 在指定字符集上生成均布随机数组 产生各种用途的测试数组/矩阵
3.2.3 二维数组元素的标识和寻访
格式 A(r,c) 全下 标法 A(r,:) A(:,c) A的r行、c列元素 A的r行、所有列元素 A的所有行、c列元素 A的所有元素按存放地址先后排成一列 单下标法确定元素 “逻辑1”寻访,生成一列 使用说明
例(向量化运算)
clear vr=[0.89, 1.20, 3.09, 4.27, 3.62, 7.71, 8.99, 7.92, 9.70, 10.41]; ir=[0.028, 0.040, 0.100, 0.145, 0.118, 0.258, 0.299, 0.257, 0.308, 0.345]; r=vr./ir rm=mean(r)
单下 标法
逻辑标识法
A(:) A(s) A(L)

A=zeros(2,6) A(:)=1:12 A(2,4) A(8) A(:,[1,3]) A([1,2,5,6]') A(:,4:end) A(2,1:2:5)=[-1,-3,-5] B=A([1,2,2,2],[1,3,5] ) L=A<3 A(L)=NaN
例 、 >>a=[1 1 1;2 2 2;3 3 3]; >>b=[1 2 3]; >>c=a*b ???Error… >>d=b*a d= 14 14 14
矩阵和数组的乘法
例、 >>a=[1 2 3 4 5]; >>b=[2 3 4 5 6]; >>c=a .* b c=2 6 12 20 30 >>d=a.*3 d= 3 6 9 12 15
则有:a * x b
x=b\a=[0.2603 0.3699] < b2×1*X1×2=a2×2 > X=a/b error 同理:x=b/a也不行, < x*a2×2≠ b2×1 > 要求:左除“\”的两矩阵的行数必须相等; 右除“/”的两矩阵的列数必须相等。
数组的左除“.\”和右除“./”
3.2.4 数组操作技法综合
指令 diag repmat reshape flipud 含义 若X是矩阵,则diag(X)为X的主对角线向量 若X是向量,diag(X)产生以X为主对角线的对角矩阵 指定行数与列数铺放模块数组 总元素不变的情况下,改变数组的行列数 交换上下对称位置的数组元素
fliplr rot90
已知 f (t ) e ,求 A、用符号计算法解 syms t x ft=exp(-sin(t)) sx=int(ft,t,0,4)
sin(t )
s( x) f (t ) dt
0
4

出错:Warning: Explicit integral could not be found.
3.1 数值计算的特点和地位
1、矩阵运算规则:
(1)只有同型矩阵才能相加减,矩阵可与一个标 量相加减; (2)只有有相邻公共阶的两矩阵才能相乘 Cm×n=Am×k*Bk×n; (3)只有方阵才能求幂; (4)左除(\)运算两矩阵的行数相等,右除(/) 运算两矩阵的列数相等。
2、数组运算规则:
参与数组运算的数组必须同维,或者其中某个 数组为标量;数组运算的结果仍是数组,且与原 数组同维。
例(向量化运算)
(2) [X,Y]=meshgrid(x,y); Z=sin(abs(X.*Y)); (3) norm(Z-Z0) (4) surf(X,Y,Z) xlabel('x') ylabel('y') shading interp view([190,70])
例(向量与非向量编程时间差)
tril(A) triu(A)
交换左右对称位置的数组元素 把数组逆时针旋转90度
提取一个矩阵的下三角部分 提取一个矩阵的上三角部分

a=1:8 A=reshape(a,4,2) A=reshape(A,2,4) b=diag(A) B=diag(b) D1=repmat(B,2,4) D1([1,3],: )=[ ] A=reshape(1:9,3,3) B=flipud(A) C=fliplr(A) D=rot90(A,2) tril(A) triu(A)
相关文档
最新文档