matlab——第三章 数值数组及其运算
第三章 数值数组及向量运算
![第三章 数值数组及向量运算](https://img.taocdn.com/s3/m/9f2bf32dbd64783e09122b8b.png)
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]
各元素之间用“空格”或“,” (英文状态下) 分开;
matlab学习3-数值计算
![matlab学习3-数值计算](https://img.taocdn.com/s3/m/004fafa70029bd64783e2ca7.png)
六、矩阵元素之间的逻辑运算
一、矩阵的构造
1、向量的构造
向量是1×N( N×1 )的特殊矩阵,称为N维向量。
是一种特殊的矩阵 (1)逐个输入法:x=[ ] 行向量:数据元素之间均用空格(或逗号)隔开; 例:x1=[2 3 sqrt(3) 5] 列向量:数据元素之间均用分号隔开 例:x2=[2;3;sqrt(3);5] 注:行向量和列向量之间的转换“ ’ ”
第二章
基本数值计算
第一节 简单的数学运算
第二节 MATLAB数值计算基础
第三节 MATLAB数值分析与多项式计算
第一节 简单的数学运算 一、常用的数学运算符 二、Matlab 语言规则 三、常用操作命令和键盘技巧 四、常量和变量 五、函数
一、常用的数学运算符
1、Matlab 的数学运算定义在复数域上。
example3
2、矩阵的基本运算: (1)标量与矩阵的数运算和数学函数对矩阵的运算等 于对矩阵的每一个元素的运算。 a=[1 2 3];b=a+100 b= 101 102 103 (2)进行矩阵加减时,参与运算的矩阵必须同维。 (3)进行矩阵乘法时, A的行数=B列数。 左乘与右乘不同:一般A*B不等于B*A 若A*B等于B*A,则称A,B对易 (4)幂运算A^n
2、对矩阵(A)的部分操作:
函数
Fliplr(A)
功能
矩阵左右翻转
函数
Tiag(A,k)
功能
取矩阵对角线 元素
Flipud(A)
Flipdim(A, m) Rot(A,k)
矩阵上下翻转
矩阵沿特定 维(m)翻转 矩阵逆时针旋 转k*90度
Tril(A,k)
Triu(A,k)
取矩阵的下三 角部分
MATLAB-3数组运算
![MATLAB-3数组运算](https://img.taocdn.com/s3/m/f1f20000f12d2af90242e61e.png)
26
23
(3) 若参与逻辑运算的是两个同维矩阵,那么运算 将对矩阵相同位置上的元素按标量规则逐个进行。 最终运算结果是一个与原矩阵同维的矩阵,其元 素由1或0组成。
(4) 若参与逻辑运算的一个是标量,一个是矩阵, 那么运算将在标量与矩阵中的每个元素之间按标 量规则逐个进行。最终运算结果是一个与矩阵同 维的矩阵,其元素由1或0组成。
>> F./E ans = 1.0000 2.0000 2.3333 0.5000 1.0000 1.3333 0.4286 0.7500 1.0000 >> E*F ans = 14 32 50 32 77 122 50 122 194 >> E.*F ans = 1 8 21 8 25 48 21 48 81
5
多维数组的建立
4. 利用函数repmat生成多维数组
C=ones(2,3) repmat(C,[1 1 3]) % repmat写出类似reshape的 repmat(C,1,1,3)将显示出错 提示:repmat是通过数组复制创建多维数组的,上面的代码即 是将数组C在行维和列维分别复制一次,然后再页维复制三次得 到2×3×3的三维数组。
多维数组及其运算
1
多维数组的定义
在MATLAB 的数据类型中,向量可视为一维数组,
矩阵可视为二维数组,对于维数超过2的数组均可
视为「多维数组」简称N-D Arrays。
2
将两个二维数组叠在一起,就构成三维数组,第三维称 为「页」(Page),其中每一页包含一个由行和列构成的 二维数组,如下图所示:
6
多维数组的建立
5. 利用函数cat生成多维数组
a=zeros(2); b=ones(2); c=repmat(2,2,2); D=cat(3,a,b,c) D=cat(4,a,b,c) %创建三维数组 %创建4维数组。
matlab教程(第3讲-数组)
![matlab教程(第3讲-数组)](https://img.taocdn.com/s3/m/97a5e9685acfa1c7ab00cc06.png)
2.1数值表示、变量及表达式 (续)
运算符和表达式
运算
加 减 乘 除 幂
数学表达式
a+b a-b axb a/b或a\b
MATLAB运算符
+ * /或 \ ^
MATLAB表达式
a+b a-b a*b a/b或a\b a^b
第二种方法:使用冒号“:”操作符
〘例2-2〙创建以1~10顺序排列整数为元素的 行向量b。>>b=1:10 b=1 2 3 4 5 6 7 8 9 10
2016/11/22 Application of Matlab Language 10
所有的向量元素必须在操作符“[ ]”之内; 向量元素间用空格或英文的逗点“,”分开。
计算
z
z3
z1=3+4*i, z2=1+2*i, z3=exp(i*pi/6), z=z1*z2/z3 z_real=real(z), z_image=imag(z), z_angle=angle(z), z_length=abs(z),
2016/11/22
Application of Matlab Language
第四种方法:利用函数logspace 列向量的创建
通过实验认识该函数的功能。
使用方括号“[ ]”操作符,使用分号“;”分 割行。
〘例2-5〙键入并执行x= [1; 2; 3] X=1 2 3
使用冒号操作符
〘例2-6〙键入并执行x= (1:3)‟ % “ ‟ ”表示矩阵的转 置
2016/11/22 Application of Matlab Language 13
第3章MATLAB的数值运算与符号运算
![第3章MATLAB的数值运算与符号运算](https://img.taocdn.com/s3/m/2b63a18d02d276a200292e58.png)
3.1.3 数组与矩阵的输出
一般地,在命令窗口输入的函数语句执 行完毕后,即在工作空间产生其运行结 果。将来可以在命令窗口输入变量名查 看该变量值,也可以直接在工作空间中 打开进行查看或编辑。 如果用户需要将其保存到文件中,一是 可以保存整个工作空间,一是可以将变 量保存为数据文件,供将来调用。
MATLAB中有不同的方法生成矩阵。 概括起来,可以直接赋值输入,以快捷 方式输入,通过提示语句交互输入、通 过内建函数产生、加载外部数据文件等
3.1.1 数组与矩阵的输入
直接赋值输入矩阵或数组 这种方式是最基本且最直接的输入方式。
注:例1 >> A=[1 3 4] >> B=[1;3;4] >> E=[] 以直接赋值方式输入矩阵或数组。
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) 进行数组逻辑运算。
load -ascii filename load -mat filename
%加载ascii码数据文件 %加载二进制数据文件
3.1.1 数组与矩阵的输入
注:例5 >> load -ascii mydata.dat >> mydata
设从其它程序产生了ascii码数据文件。将其保 存在当前工作路径下,名为mydata.dat。通过 文件加载的方式将其导入工作空间。
第三章 数组及其运算
![第三章 数组及其运算](https://img.taocdn.com/s3/m/2cfc220790c69ec3d5bb7541.png)
Logm(A) A的矩阵对数函数
%例二维数组、矩阵运算 A=[-4,-3,-2;-1,0,1;2,3,4];B=[1,3,2;3,2,5;2,5,7]; C=A+B*i %生成复数数组 C.',C' %非共轭转置和共轭转置
C= -4.0000 + 1.0000i -3.0000 + 3.0000i -2.0000 + 2.0000i -1.0000 + 3.0000i 0 + 2.0000i 1.0000 + 5.0000i 2.0000 + 2.0000i 3.0000 + 5.0000i 4.0000 + 7.0000i ans = -4.0000 + 1.0000i -1.0000 + 3.0000i 2.0000 + 2.0000i -3.0000 + 3.0000i 0 + 2.0000i 3.0000 + 5.0000i -2.0000 + 2.0000i 1.0000 + 5.0000i 4.0000 + 7.0000i ans = -4.0000 - 1.0000i -1.0000 - 3.0000i 2.0000 - 2.0000i -3.0000 - 3.0000i 0 - 2.0000i 3.0000 - 5.0000i -2.0000 - 2.0000i 1.0000 - 5.0000i 4.0000 - 7.0000i
>> a=3*ones(4,5) a= 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 >> b=diag(a) b= 3 3 3 3
>> zeros(5,6) %生成 行6列的全 阵 生成5行 列的全 列的全0阵 生成 ans = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
matlab3-数组及矩阵运算
![matlab3-数组及矩阵运算](https://img.taocdn.com/s3/m/8fa05007cc7931b765ce15ea.png)
例如:
x=linspace(0,pi,11) %从0开始到pi等距产生 11个元素的行向量x
x =Columns 1 through 10 0 0.3142 0.6283 0.9425
Column 11 3.1416
1.2566
1.5708
1.8850
2.1991
2.5133
2.8274
矩阵运算与函数
函数名
含义
[]
空矩阵
eye(n) ones(m,n) rand(m,n) zeros(m,n)
n阶单位矩阵
元素全为1的m×n矩阵
元素服从0到1之间均匀分布的m×n矩阵 元素全为0的m×n矩阵
magic(n)
n阶魔方矩阵
向量和矩阵的建立与访问
在《射雕》中郭黄二人被裘 千仞追到黑龙潭,躲进瑛姑 的小屋。瑛姑出了一道题: 数字1-9填到三行三列的表 格中,要求每行、每列、及 两条对角线上的和都相等。 这道题难倒了瑛姑十几年, 被黄蓉一下子就答出来了。
b=[1 2 3;1 1 1]; %输入右端矩阵
X=b/a
%用/除法直接求方程组的解X
X= 3.0000 -2.0000 -6.0000 2.0000 -1.5000 -5.0000
linspace(a,b,n)
结果是将[a,b]等分称n-1段,返回由端点及分段点坐标所产生的n 个元素的行向量。
>> help linspace LINSPACE Linearly spaced vector. LINSPACE(X1, X2) generates a row vector of 100
linearly equally spaced points between X1 and X2.
MATLAB数值运算.pdf
![MATLAB数值运算.pdf](https://img.taocdn.com/s3/m/48d0e27fa55177232f60ddccda38376bae1fe043.png)
第3章 MATLAB 数值运算教学提示:每当难以对一个函数进行积分或者微分以确定一些特殊的值时,可以借助计算机在数值上近似所需的结果,从而生成其他方法无法求解的问题的近似解。
这在计算机科学和数学领域,称为数值分析。
本章涉及的数值分析的主要内容有插值与多项式拟合、数值微积分、线性方程组的数值求解、微分方程的求解等,掌握这些主要内容及相应的基本算法有助于分析、理解、改进甚至构造新的数值算法。
教学要求:本章主要是让学生掌握数值分析中多项式插值和拟合、牛顿-科茨系列数值求积公式、3种迭代方法求解线性方程组、解常微分方程的欧拉法和龙格-库塔法等具体的数值算法,并要求这些数值算法能在MATLAB 中实现。
3.1 多 项 式在工程及科学分析上,多项式常被用来模拟一个物理现象的解析函数。
之所以采用多项式,是因为它很容易计算,多项式运算是数学中最基本的运算之一。
在高等数学中,多项式一般可表示为以下形式:120121()n n n n n f x a x a x a x a x a −−−=+++++…。
当x 是矩阵形式时,代表矩阵多项式,矩阵多项式是矩阵分析的一个重要组成部分,也是控制论和系统工程的一个重要工具。
3.1.1 多项式的表达和创建在MATLAB 中,多项式表示成向量的形式,它的系数是按降序排列的。
只需将按降幂次序的多项式的每个系数填入向量中,就可以在MATLAB 中建立一个多项式。
例如,多项式43231529s s s s +−−+在MATLAB 中,按下面方式组成一个向量x = [1 3 -15 -2 9]MATLAB 会将长度为n +1的向量解释成一个n 阶多项式。
因此,若多项式某些项系数为零,则必须在向量中相应位置补零。
例如多项式41s +在MATLAB 环境下表示为y = [1 0 0 0 1]3.1.2 多项式的四则运算多项式的四则运算包括多项式的加、减、乘、除运算。
下面以对两个同阶次多项式MATLAB 基础及其应用教程·66··66·32()234a x x x x =+++,32()4916b x x x x =+++做加减乘除运算为例,说明多项式的四则运算过程。
Matlab 第3章 数值数组及向量化运算
![Matlab 第3章 数值数组及向量化运算](https://img.taocdn.com/s3/m/8093bcc549649b6648d7472e.png)
%计算不同电压下的电阻值 %计算电阻平均值
2:数组运算
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
r=vr./ir
rm=mean(r)
2:数组运算
【例 3.3-2】见教材132页 (1)非向量化编程 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
2:数组运算
我们要测量弹簧的弹性模量 力 变形 刚刚才用过
力:100N 变形量:5mm 弹性模量=100N / 5mm = 20 N/mm
读数有误差
环境干扰
理 论 值 实 际 值
那我们就需要测量弹簧在受N多个力的情况下,变形量各是多少,然 后分别求出各个弹性模量,最后取平均值。
2:数组运算
通过实验,我们测得了以下数据:
% 变量a是什么 % 数组a的维数 % 数组a的大小
3:“非数”和“空”数组
(3)空数组用于子数组的删除和大数组的大小收缩 A=reshape(-4:5,2,5) A= -4 -2 0 2 4 -3 -1 1 3 5 A(:,[2,4])=[ ] %删除数组A的第2、4列 A= -4 0 4 -3 1 5
2*x+3*y=5 4*sin(x)-5*cos(y)=7
第一次作业解答
x = linspace ( a, b, n)
matlab数组和数组运算.ppt
![matlab数组和数组运算.ppt](https://img.taocdn.com/s3/m/cfe13990ad51f01dc281f1d4.png)
2020年4月19日
5
数组寻址
• 数组中总是包含多个元素,因此在对数组的单个 元素或者多个元素进行访问时,需要对数组进行 寻址运算。
将下标转化为单一索引值,或将单一索引值转化为下标
flipdim(M,1)
沿着一个指定的维轮换顺序。等效于二维数组中的 flipud 和 fliplr
shiftdim(M,2)
循环轮换。第二个参数为正的话,进行各维的循环轮换;第二个参数为负的情况下,将 使数组的维数增加
permute(M,,[2,1,3]) ipermute(M,,[2,1,3])
(4)矩阵求逆:inv(A)为A的逆 (inverse).
2020年4月19日
25
(5)求转置矩阵:A'.
(6)求矩阵的行列 式:det(A) ,(determinant是行 列式)。
(7)矩阵幂运算:用^.如A^3,表示 A*A*A。
(8)矩阵指数运算:expm(A),A为 方阵。
2020年4月19日
在 MATLAB 中,可以利用冒号生成等差数组。格式 为:数组名=[开始数字:公差:结束数字],公差默认 为1。
– 用数组生成函数生成数组
• eye:生成单位矩阵 • linspace:生成线性分布的向量 • rand:生成随机数组,数组元素值均匀分布
2020年4月19日
4
数组的查找
数组的查找函数是find,它能够查找数组中的非零 数组元素,并返回其数组索引值。
2020年4月19日
第3章MATLAB数值运算
![第3章MATLAB数值运算](https://img.taocdn.com/s3/m/4eeb7f657275a417866fb84ae45c3b3566ecdd77.png)
3.1 多项式
三、多项式的求值和求根运算
(1)代数多项式求值 polyval函数用来求代数多项式的值,其调用格式为: Y=polyval(P,x) 若x为一数值,则求多项式在该点的值;若x为向量或矩阵,
则对向量或矩阵中的每个元素求其多项式的值。
3.1 多项式
三、多项式的求值和求根运算
(2)矩阵多项式求值
次,向量p为返回的要拟合的多项式的系数,向量s 为调用函数polyval获得的错误预估计值。
3.5 稀疏矩阵
矩阵的存储方式: 1.全元素(Full) 存储—— 完全矩阵 2.稀疏(Sparse)存储——稀疏矩阵
稀疏矩阵存在的必要性: 对大多数元素数值为0的矩阵,若采用满阵方式表 示,则0元素将占用相当的存储空间。
非常有价值的工具。 Matlab提供了一维、二维、 三次样条等许多插值选
择。 多项式插值函数:interp1
3.2 插值和拟合
二、拟合 拟合函数:polyfit 调用方法: P=polyfit(x,y,n) [p,s]=polyfit(x,y,n) 说明:x,y为已知的数据组,n为要拟合的多项式的阶
>> A=sparse(i,j,s,6,6)
A=
(1,1) 15
(5,1) 91
(2,2) 11
(2,3) 3
(6,3) 28
(1,4) 22
(3,4) -6
(1,6) -15
>> full(A) ans =
15 0 0 22 0 -15 0 11 3 0 0 0 0 0 0 -6 0 0 000000 91 0 0 0 0 0 0 0 28 0 0 0
3.1 多项式
一、多项式的表达和创建
【Matlab 参考教程】第三章 数值数组及其运算
![【Matlab 参考教程】第三章 数值数组及其运算](https://img.taocdn.com/s3/m/922492e8998fcc22bcd10d0d.png)
3 数值数组及其运算3.1 引导【*例3.1-1】绘制函数x xe y -=在10≤≤x 时的曲线。
x=0:0.1:1 %定义自变量的采样点取值数组y=x.*exp(-x) %利用数组运算计算各自变量采样点上的函数值plot(x,y),xlabel('x'),ylabel('y'),title('y=x*exp(-x)') %绘图 x =Columns 1 through 70 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 Columns 8 through 110.7000 0.8000 0.9000 1.0000y =Columns 1 through 70 0.0905 0.1637 0.2222 0.2681 0.3033 0.3293 Columns 8 through 113.2 一维数组的创建和寻访3.2.1 一维数组的创建3.2.2 一维数组的子数组寻访和赋值【*例3.2.2-1】子数组的寻访(Address )。
rand('state',0)%把均匀分布伪随机发生器置为0状态 x=rand(1,5) %产生)51(⨯的均布随机数组x =0.9501 0.2311 0.6068 0.4860 0.8913x(3) %寻访数组x的第三个元素。
ans =0.6068x([1 2 5]) %寻访数组x的第一、二、五个元素组成的子数组。
ans =0.9501 0.2311 0.8913x(1:3) %寻访前三个元素组成的子数组ans =0.9501 0.2311 0.6068x(3:end) %寻访除前2个元素外的全部其他元素。
end是最后一个元素的下标。
ans =0.6068 0.4860 0.8913x(3:-1:1) %由前三个元素倒排构成的子数组ans =0.6068 0.2311 0.9501x(find(x>0.5)) %由大于0.5的元素构成的子数组ans =0.9501 0.6068 0.8913x([1 2 3 4 4 3 2 1]) %对元素可以重复寻访,使所得数组长度允许大于原数组。
matlab 数值数组及其运算
![matlab 数值数组及其运算](https://img.taocdn.com/s3/m/dbf9d289680203d8ce2f241b.png)
matlab 数值数组及其运算数值数组(Numeric Array)和数组运算(Array Operation)是Matlab的核心运算内容一、导言二、一维数组 (向量)三、二维数组(矩阵)四、高维数组五、MATLAB 的运算符一、导言1、数组的定义数组是指一组实数或复数排成的长方阵列(Array)一维的行或列 ? 向量二位数组 ? 矩阵三维的“若干矩阵的堆叠” ? 体四维更高维2、数组运算无论在数组上施加什么运算(+, -, * ,/,或函数等),该运算对数组中的每个元素都实施同样的操作。
Matlab的数组运算使计算程序简短、易读提高程序的向量化程度、提高计算效率示例x=0:0.1:1 %定义自变量的采样点取值数组y=x.*exp(-x) %利用数组运算计算各自变量采样点上的函数值plot(x,y),xlabel('x'),ylabel('y'),title('y=x*exp(-x)') %绘图4 矩阵的索引或下标矩阵 A 中,位于第 i 横列、第 j 直行的元素可表示为 A(i, j) ,i 与 j 即是此元素的下标(Subscript)或索引(Index)MATLAB 中,所有矩阵的内部表示法都是以直行为主的一维向量A(i, j) 和 A(i+(j-1)*m) 是完全一样的~m为矩阵A的列数我们可以使用一维或二维下标来存取矩阵矩阵的索引或下标可以使用矩阵下标来进行矩阵的索引(Indexing)A(4:5,2:3) -取出矩阵 A 的第四、五横列与二、三直行所形成的部份矩阵A([9 14; 10 15]) - 用一维下标的方式来达到同样目的用冒号(:), 取出一整列或一整行A(:, 5) -取出矩阵 A 的第五个直行用 end 这个保留字来代表某一维度的最大值A(:, end) - 矩阵 A 的最后一个直行可以直接删除矩阵的某一整个横列或直行A(2, :) = [] –删除A矩阵的第二列A(:, [2 4 5]) = [] - 删除 A 矩阵的第二、四、五直行二、一维数组1 一维数组的创建(1)逐个元素输入 []Column>> X = [ 1 ; 2 ; 3 ];Row>> Y = [ 1 , 2 , 3 ];>> Y = [ 1 2 3 ];逗号和分号的作用?逗号和分号可作为指令间的分隔符,matlab允许多条语句在同一行出现。
MATLAB第三章数值数组及其运算
![MATLAB第三章数值数组及其运算](https://img.taocdn.com/s3/m/d81977e8dc3383c4bb4cf7ec4afe04a1b071b093.png)
行向量
如:array=[2, pi/2, sqrt(3), 3+5i]
x=[1,2,3,4,5都已知.如对 少量实验数据的处理可用此种方法.
4
(2) 冒号生成法: array=a: inc: b
<向量>
a---数组的第一个元素
inc---采样点之间的间隔, 即步长. 最后一个元素不一定等于b, 其大小为b’=a +inc*[(b-a)/inc]; 步长可以省略, 默认为 1; inc可以取正数或负数, 但要注意当取正时,要保证b>a, 数 组最后一个元素不超过b, 取负时b<a, 最后一个元素不小于b.
(2) 数值计算解法
delt=0.01; x=0:delt:4;
y=exp(-sin(x));
sx=delt*cumtrapz(y);
plot(x,y, 'r', 'LineWidth', 6); hold on;
plot(x, sx, '.b', 'MarkerSize', 15);
plot(x, ones(size(x)), 'k');
a inc>0 b
b inc>0 a
特点: 等差数列
方便对数据之间的间隔(步长)进行控制.但要注意三个数值之 间的关系,可能得到空数组.另外要注意生成的数组的元素的 个数.如x=a: (b-a)/n :b (b>a)得到n+1个元素的数组.
5
x=1:5x=[1,2,3,4,5]
y=5:-1:1y=[5, 4, 3, 2, 1]
2. 在命令窗中输入MyMatrix
11
3.5 二维数组的标识 (mxn, m>1, n>1)
matlab数值数组及向量化运算
![matlab数值数组及向量化运算](https://img.taocdn.com/s3/m/c7b5d3d6910ef12d2af9e765.png)
第2章 数值数组及向量化运算数值数组(Numeric Array )和数组运算(Array Operations )始终是MATLAB 的核心内容。
本章教学内容:数组浮点算法的特点;一、二维数值数组的创建和寻访;常用标准数组生成函数和数组构作技法;数组运算和向量化编程;实现数组运算的基本函数;关系和逻辑操作。
2.1 数值计算的特点和地位【例2.1-1】已知t t t f cos )(2=,求dt t f x s x⎰= 0 )()(。
(1)符号计算解法syms t x %定义符号变量ft=t^2*cos(t)sx=int(ft,t,0,x)ft =t^2*cos(t)sx =x^2*sin(x)-2*sin(x)+2*x*cos(x)(2)数值计算解法dt=0.05;t=0:dt:5; %取一些离散点Ft=t.^2.*cos(t);Sx=dt*cumtrapz(Ft); %梯形法求定积分t(end-4:end) %end 表示最后一个元素Sx(end-4:end) %Sx 的最后5个元素plot(t,Sx,'.k','MarkerSize',12)xlabel('x'),ylabel('Sx'),grid onans =4.8000 4.8500 4.9000 4.95005.0000ans =-20.1144 -19.9833 -19.7907 -19.5345 -19.2131图 2.1-1 在区间[0, 5]采样点上算得的定积分值【例2.1-2】已知)sin()(t e t f -=,求⎰=40 )()(dt t f x s 。
本例演示:被积函数没有“封闭解析表达式”,符号计算无法解题!(1)符号计算解法syms t xft=exp(-sin(t))sx=int(ft,t,0,4)ft =exp(-sin(t))Warning: Explicit integral could not be found.> In sym.int at 58sx =int(exp(-sin(t)),t = 0 .. 4)(2)数值计算解法dt=0.05;t=0:dt:4;Ft=exp(-sin(t));Sx=dt*cumtrapz(Ft);Sx(end)plot(t,Ft,'*r','MarkerSize',4)hold onplot(t,Sx,'.k','MarkerSize',15)hold offxlabel('x')legend('Ft','Sx')ans =3.0632图 2.1-2 在区间[0, 4]中间的被积函数及其原函数的离散计算结果小结:(1)符号计算长处——可以对包含变量字符、参数字符和数字的表达式进行推理、运算,并给出符号结果,与高等数学中的解析式比较接近;符号计算的短处——很多问题无解或求解时间过长。
matlab数值数组及其运算
![matlab数值数组及其运算](https://img.taocdn.com/s3/m/2d3ca7efb8f67c1cfad6b8da.png)
即指出是“第几行,第几列”的元素 优点:几何概念清楚,引述简单。(最常用) “全下标”由两个下标组成:行下标,列下标
A(r,c)
A的r行c列元素
A(r,:)
A(:,c)
A的r行全部元素,按行排
A的c列全部元素,按列排
3.2.3 二维数组元素的标识和寻访
2.“单下标”标识
就是用一个下标来指明元素在数组中的位置 对二维数组元素进行“一维编号”
A= -4 -3 -2
-1 0 1
2 3 4
3.2.4 数组操作技法综合
(5)数组的删除 A1([1,3],:)=[] %删除A1的第1,3行。[]为空数组 A1= A1 = 3 0 -3 -2 1 4 注意:只能整行整列的删除 -3 0 3 (6)rot90的使用演示 -4 -1 2 D=rot90(A2,2) %逆时针旋转180度 D= A2 = -2 1 4 2 -1 -4 -3 0 3 3 0 -3 -4 -1 2 4 1 -2
3.2.2 二维数组的创建
【例】标准数组产生的演示
ones(1,2) %产生长度为2的全1行数组 ans = 1 1 randn(„state‟,0)%把正态随机数发生器置0 A=randn(2,3)%产生2×3的正态随机阵 A= -0.4326 0.1253 -1.1465 -1.6656 0.2877 1.1909 B=eye(3) %产生3×3的单位阵 B= 1 0 0 0 1 0 0 0 1
0.4860
0.8913
补充:一维数组元素的寻访和赋值
(1)数组元素的寻访(Address)
x(3) %寻访数组x的第三个元素 x([1 2 5]) %寻访数组x的第一、二、五个元素,组成子数组 x(1:3) %寻访前三个元素,组成子数组 x(3:end) %寻访从第三到最后的元素,组成子数组。 x(3:-1:1) %由前三个元素倒排构成子数组 x(find(x>0.5)) %由大于0.5的元素构成子数组 %先找到大于0.5的元素下标再寻访 x([1 2 3 4 4 3 2 1])%对元素可以重复寻访,使所得数组长 度允许大于原数组 注意对数组的寻访不改变原数组的值
教学课件第3讲MATLAB数组与运算
![教学课件第3讲MATLAB数组与运算](https://img.taocdn.com/s3/m/94bbb35ccd1755270722192e453610661ed95acc.png)
1. 基本算术运算
MATLAB的基本算术运算有:+(加)、-(减)、*(乘)、 /(右除)、\(左除)、^(乘方)。
注意:运算是在矩阵意义下进行的,单个数据的算术运 算只是一种特例。
2. 点运算
点运算符有.*、./、.\和.^。两矩阵进行点运算是指它
西 们的对应元素进行相关运算,要求两矩阵的维参数相
科 技
ind2sub函数求得。
大
学
网
络
教
育
2. 矩阵拆分
(1)利用冒号表达式获得子矩阵
①A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A 矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第 j列的元素。
②A(i:i+m,:)表示取A矩阵第i~i+m行的全部元素; A(:,k:k+m)表示取A矩阵第k~k+m列的全部元素, A(i:i+m,k:k+m)表示取A矩阵第i~i+m行内,并在第 k~k+m列中的所有元素。
西 南 科 技 大 学 网 络 教 育
3.3 MATLAB矩阵
3.3.1 矩阵的建立
1. 直接输入法
将矩阵的元素用方括号括起来,按矩阵
行的顺序输入各元素,同一行的各元素 之间用空格或逗号分隔,不同行的元素 之间用分号分隔。例如
西 南
A=[1 2 3;4 5 6;7 8 9]
科
技
大
学
网
络
教
育
2. 利用M文件建立矩阵
西 南 科 技 大 学 网 络 教 育
字 符 串 是 以 ASCII 码 形 式 存 储 的 。 abs 和
double函数都可以用来获取字符串矩阵所对
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
sqrt(A) 对A的各元素求平方根
3.6.4 标准数组生成函数
指令 diag eye magic ones 含义 指令 含义
产生对角形数据 rand 产生均匀分布随机数组 randn 产生正态分布随即数组 产生单位数组 zeros 产生全0数组 产生魔方数组 产生全1数组
>> ones(3) ans = 1 1 1 1 1 1 1 1 1 >> ones(1,2) ans = 1 >> magic(3) ans = 8 1 6 3 5 7 4 9 2
3.6 数组运算和矩阵运算
3.6.1 标量-数组运算
>>g = 1 2 5 6 9 10 >> g-2 ans = -1 0 3 4 7 8 > >2*g-1 ans = 3 4 1 3 5 7 7 8 9 11 13 15 11 12 17 19 21 23 >> 2*g/5+1 ans = 1 2 1.4000 1.8000 2.2000 5 6 3.0000 3.4000 3.8000 9 10 4.6000 5.0000 5.4000
啊(
>>A=zeros(2,4) A= 0 0 0 0 0 0 0 0 >>A(:)=1:8 %全元素赋值方式 A= 1 3 5 7 2 4 6 8 >>s=[2 3 5] %产生单下标数组行数组 s= 2 3 5 >>A(s) ans = 2 3 5
>>Sa=[10 20 30]' %Sa是长度为3的“列数组” Sa = 10 20 30 >>A(s)=Sa %单下标方式赋值 A= 1 20 30 7 10 4 6 8 >>A(:,[2 3])=ones(2) %把A的第2、3列元素全赋值为1 A= 1 1 1 7 10 1 1 8
4 5 9 10 14 15
5 7 12 14 19 21
>> g.*h ans = 1 2 3 4 10 12 14 16 27 30 33 36 >>g*h ??? Error using ==> * Inner matrix dimensions must agree. >> g./h ans = 1.0000 2.5000 3.0000
>> a=[1 2 3 4] a= 1 2 3 >> diag(a) ans = 1 0 0 0 2 0 0 0 3 0 0 0 >> diag(a,2) ans = 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4
0 0 0 4
0 2 0 0 0 0
0 0 3 0 0 0
0 0 0 4 0 0
>> A(2,3) ans = 6 >>sub2ind([3 3],2,3) ans = 8
>> A(7) ans = 3 >> [i,j]=ind2sub([3 3],7) i= 1 j= 3
3.5 二维数组的子数组寻访和赋值
A(r,c) A(r,:) A(:,c) A(:)
A的“r指定行”和“c指定列”上的元素组成 A的“r指定行”和“全部列”上的元素组成 A的“全部行”和“c指定列”上的元素组成 A的各列按自左到右的次序,首尾相接而生成“一维长列 ” 数组 A(s) 生成“s指定的”一维数组。s若是“行数组”(或“列数 组”) ,则A(s)就是长度相同的“行数组”(或“列数组”) 由与A同样大小的“逻辑数组”L中的“1”元素选出A的对 A(L) 应元 素;按“单下标”次序排成长列组成 A(r,c)=Sa 以“双下标”方式,对子数组A(r,c)进行赋值;Sa的“行 宽 、列长”必须与A(r,c)的“行宽、列长”相同 A(:)=D(:) 全元素赋值方式。结果:保持A的“行宽,列长”不变。 条 件:A、D两个数组的总元素数相等,但“行宽、列长”不
diag flipud
fliplr
kron repmat
>> a=-4:4 a= -4 -3 -2 -1 0 >> A=reshape(a,3,3) A= -4 -1 2 -3 0 3 -2 1 4
1
2
3
4
>> flipud(A) ans = -2 1 4 -3 0 3 -4 -1 2 >> fliplr(A) ans = 2 -1 -4 3 0 -3 4 1 -2
>> x(3)=0 x= Columns 1 through 7 0 0.3142 0 0.9425 1.2566 1.5708 1.8850 Columns 8 through 11 2.1991 2.5133 2.8274 3.1416 >> x([1 4])=[1 1] x= Columns 1 through 7 1.0000 0.3142 0 1.0000 1.2566 1.5708 1.8850 Columns 8 through 11 2.1991 2.5133 2.8274 3.141
3.6.5 数组操作函数
cat 把“大小”相同的若干数组,沿“指定维”方 向,串 接成高维数组 提取对角元素,或生成对角阵 以数组“水平中线”为对称轴,交换上下对称 位 置上的数组元素 以数组“垂直中线”为对称轴,交换左右对称 位 置上的数组元素 按Kronecker乘法规则产生“积”数组 按指定的“行数、列数”铺放模块数组,以形
>>x(3:end) %数组x从第三个元素开始到最后一个元素 ans = Columns 1 through 7 0.6283 0.9425 1.2566 through 9 2.8274 3.1416 >>x(3:-1:1) %寻访数组x前三个元素倒排构成的子数组 ans = 0.6283 0.3142 0 >>x([1 2 3 4 4 3 2 1]) %对元素可进行重复寻访 ans = Columns 1 through 7 0 0.3142 0.6283 0.9425 0.9425 0.6283 0.3142 Column 8 0
2.0000 3.0000 3.3333
3.0000 3.5000 3.6667
4.0000 4.0000 4.0000
3.6.3 数组运算和矩阵运算的对照
>> A=zeros(2,3); >> A(:)=1:6; >> A=A*(1+i) >> A_A=A.„ >> A_M=A'
A= 1.0000 + 1.0000i 2.0000 + 2.0000i A_A = 1.0000 + 1.0000i 3.0000 + 3.0000i 5.0000 + 5.0000i A_M = 1.0000 - 1.0000i 3.0000 - 3.0000i 5.0000 - 5.0000i 3.0000 + 3.0000i 5.0000 + 5.0000i 4.0000 + 4.0000i 6.0000 + 6.0000i 2.0000 + 2.0000i 4.0000 + 4.0000i 6.0000 + 6.0000i 2.0000 - 2.0000i 4.0000 - 4.0000i 6.0000 - 6.0000i
3.2 一维数组的创建和寻访
3.2.1 一维数组的创建
逐个元素输入法 冒号生成法 x=a : inc : b
若(b-a)是inc的整数倍,则所生成数组的最 后一个元素等于 b,否则小于 b。 inc省略时,默认其取值为 1。 inc可以取正数或负数。inc取正时,要保证 a<b;而inc取负时,要保证 a>b。
以(m×n)的二维数组A为例,若“全下标”元 素位置是“第r行,第 c列”,那么相应的“单下 标”为 l=(c-1)*m+r。 sub2ind 根据全下标算出单下标
ind2sub
>> A=[1 2 3; 4 5 6; 7 8 9] A= 1 2 3 4 5 6 7 8 9
根据单下标算出全下标
A.' s.*A s./B A.^n
非共轭转置 标量s分别与A元素之积 s分别被B的元素除
A' s*A
共轭转置 标量s与A每个元素之积
s*inv(B) B阵的逆乘
A的每个元素自乘n次
对A各元素求非整数幂
A^n
A^p
A阵为方阵时,自乘n次
方阵A的非整数乘方
A.^p
p.^A A.*B A./B
以p为底,分别以A的元 素为指数求幂值
第3章 数值数组及其运算
一维数组
二维数组
特殊数组
关系操作和逻辑操作
3.1 简单数组
y sin( x),0 x
>> x=[0 .1*pi .2*pi .3*pi .4*pi .5*pi .6*pi .7*pi .8*pi .9*pi pi] x= Columns 1 through 7 0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850 Columns 8 through 11 2.1991 2.5133 2.8274 3.1416 >> y=sin(x) y= Columns 1 through 7 0 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 Columns 8 through 11 0.8090 0.5878 0.3090 0.0000
3.3 二维数据的创建
整个输入数组必须以方括号“[]”为其首尾 ; 数组的行与行之间必须用分号“;”或回车键 【Enter】隔开;