Matlab:一维数组及其应用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
xT
若x的元素均为实数,则x.’与x’的结果相同 x = (1:100)’
11、一维数组与一维数组的运算
两个一维数组之间进行运算,要求: 1、两个数组都为行数组(或都为列数组) 2、数组元素个数相同,
x+y x-y 对应位置的元素做 x.*y x./y C语言中,可 x.\y 使用循环语句完成 类似的操作 x.^y
2 2
x 2 3、绘制椭圆: + y = 1 4 − t /3 4、绘制衰减振荡曲线y = e sin 3t t ∈ [ 0, 4π ] 及它的包络线y0 = ± e
− t /3
2
。
三、一维数组在向量运算中的应用
在Matlab中,三维空间里的 三维向量(或点):
a = ax i + a y j + az k b = bx i + by j + bz k c = cx i + c y j + cz k
a = ax , a y , az
可表示为行向量 (或列向量):
b = bx , by , bz c = cx , c y , cz
1、向量的模(长度)
a = ax i + a y j + az k a = a +a +a
2 x 2 y 2 z
a = [4,3,1] d = sqrt(sum(a.*a)) 或: d = sqrt(sum(a.^2))
例:使用子图
x= 0:pi/10:2*pi; y1=sin(x) y2=cos(x) subplot(2,2,1); plot(x,y1); subplot(2,2,2); plot(x,y2);
被激活的子图在用户输入另 一个subplot或者figure命令之前 会一直保持被激活状态。 当一个新的subplot命令改变 了在图形窗口中的子图数量的时 候,原来的那些子图就被擦除掉 了,以便给新的子图腾出空间。 为了回到默认的模式并且在 整个图形窗口中只用一套坐标轴, 可以使用命令subplot(1,1,1)
ˆ Y = b0 + b1 X b1 =
∑( X
n i =1 n i =1
i
− X )(Yi − Y )
2
∑( Xi − X ) ∑(X
i =1 n
=
∑( X
n i =1 n i =1
i
− X ) Yi
2
∑( Xi − X )
b0 = Y − b1 X r=
i
− X )(Yi − Y )
2
∑(X
i =1
3、用plot函数同时绘制多条曲线
plot(x1,y1,’s1’,x2,y2,’s2’, …)
x1,y1,’s1’ 第一条曲线及其属性 x2,y2,‘s2’ 第二条曲线及其属性 属性可以不写 x= 0:pi/10:2*pi; y1=sin(x) y2=cos(x) plot(x,y1,x,y2);
Matlab:一维数组及其应用
一、一维数组 二、一维数组在二维绘图中的应用 三、一维数组在向量运算中的应用 四、一维数组在一元多项式运算中的应用
一、一维数组
• 数值数组(简称为数组)是Matlab中最重要的 一种内建数据类型 • 数组运算是Matlab软件定义的运算规则, 其目的是为了数据管理方便、操作简单、 指令形式自然和执行计算的有效。 • 无论在数组上施加什么运算(加减乘除或函 数),总认定那种运算对被运算数组中的每 个元素(Element)进行运算。
1、一维数组的两种形式
• 行数组:n个元素排成一行 又称为行向量(row vector) • 列数组:m个元素排成一列 又称为列向量(column vector) 一般情况下,向量指列向量
2、用方括号[ ]创建一维数组
• 整个数组放在方括号里 • 行数组元素用空格或逗号分隔 x = [2, pi/2, sqrt(3), 3+5i] • 列数组元素用分号分隔 y = [2;pi;3/4;j] • 标点符号一定要在英文状态下输入 • x = [] 生成空数组
例:使用hold绘制多个图形
x= 0:pi/10:2*pi; y1=sin(x) y2=cos(x) plot(x,y1); hold on; plot(x,y2);
5、在一个图形窗口中绘制多个子图
一个图形窗口可以包含多个子图,每个子图 拥有自己的坐标轴
subplot(m,n,p)
将一个绘图窗口分割成 m×n 个子图,并将 第 p 个子图选定为当前的绘图区域。 子图从最上边一行开始 ,从左至右、从上至下 依次编号
4、在已存在的图形上添加新图形
• 可以使用hold命令在一个已经存在得图形上添加 一个新的图形。 • hold on:在输入新的plot函数得时候,matlab不 会将现存得坐标轴删除,而是将新得曲线添加到 当前的坐标轴中。当新的数据超出了当前坐标限 的范围,matlab就将坐标轴重新刻度。 • hold off:将当前的图形窗口中的图形释放,用以 绘制新的图形。 • hold:实现hold设置的切换。 • ishold:查询hold当前是on还是off
6、在多个图形窗口中绘图
• 激活绘图窗口
figure(n)
• 关闭图形窗口
close(n) close all
• 擦除窗口的内容
clf:将一个图形窗口的内容擦除而不关闭它。 clf reset:将当前的图形窗口擦除,然后将诸如hold这 样的所有属性重新设置为它们的默认状态。
例:使用多个图形窗口
13、与一维数组相关的函数
max(x) 返回x中的最大值 [a,b] = max(x) 返回x的最大值(a)及最大值在x中的位置(b) 返回一向量,元素为x,y相同位置上的较大值 max(x,y) min(x) [c,d]= min(x) min(x,y) mean(x) median(x) std(x)
x= 0:pi/10:2*pi; y1=sin(x) y2=cos(x) figure(1); plot(x,y1); figure(2); plot(x,y2);
为了在一个已有的图形窗 口中绘制一个新的图形,这个 窗口必须是激活的,或者是当 前的图形窗口。
上机练习
1、绘制连续调制波形y = sin ( t ) sin ( 9t ) 0 ≤ t ≤ 2π 2、绘制圆:x + y = 4
将 a 赋值给数组 x 中的最后一个元素
x(8) = 6.5 会出现什么结果?
8、引用一维数组中的子数组
x = linspace(1,5) a = x([2,5,9]) x = linspace(1,5) s = [2,5,9] a = x(s)
引用一维数组x中的第2、5、9个元素, 将其赋值给变量 a
plot(x,cos(x),’k*-’);
黑色、 黑色、实线 离散点用星号
2、线型、标记和颜色
: -. -线型 实线 点线 点划线 虚线 点标记 . 点 v 下三角 o 小圆圈 ^ 上三角 x 叉号 < 左三角 + 加号 > 右三角 •星号 p 五角星 s 方格 h 六角星 d 菱形 b g r c m y k w 颜色 蓝色 绿色 红色 青色 棕色 黄色 黑色 白色
y1 y Y = 2 L yn f ( y1 ) f ( y2 ) f (Y ) = L f ( yn )
输入为列数组,则 输出也为列数组
,
10、一维数组的转置运算
x.’ x做转置(行→列,列→行)即xT † x’ x做共轭转置 即x
3、用冒号创建一维数组
• x = a:b • x = a:inc:b
a,b必须为实数 x = [a,a+inc,a+2*inc,…] a是数组x中的第一个元素,b不一定是数组x 的最后一个元素。 默认 inc = 1
4、用linspace()函数创建一维数组
x = linspace(a,b) x = linspace(a,b,n)
将2、7分别赋值给x的第1、4个元素
10、Matlab中的函数 在一维数组上的运算规则
Matlab中的很多函数都可以直接以数组作为输 入参数,函数输出也为数组。
X = [ x1 , x2 ,L , xn ]
输入为行数组,则 输出也为行数组
f ( X ) = f ( x1 ) , f ( x2 ) ,L , f ( xn )
加 减 乘 右除 左除 幂
y+x y-x y.*x y./x y.\x y.^x
12、一维数组与数的运算
若x为数组,c为数(实数或复数), x+c x–c c.*x 数组的每个元素 x./c 都与数c做 x.\c x.^c 加 减 乘 右除 左除 幂 c+x c-x c*x c./x c.\x c.^x
一维数组相关函数的应用
以线性拟合为例
测得铜导线在温度Ti下的电阻为Ri,编写一个M脚本文 件,用matlab提供的数组函数对数据进行线性拟合,求出斜率 、截距和相关系数,并与origin的拟合结果进行比较。 n 1 2 3 4 5 6 7 T(℃) 19.1 25.0 30.1 36.0 40.0 45.1 50.0 R(Ω) 76.30 77.80 79.25 80.80 82.35 83.90 85.10
引用数组 x 中的第 k 个元素, 将其赋值给变量 a
b = x(end)
引用数组 x 中的最后一个元素, 将其赋值给变量 b
c = x(8) 会出现什么结果?
7、一维数组中单个元素的赋值
x = 1:5 a = 1.5 k=3 x(k) = 0
将 0 赋值给数组 x 中的第 k 个元素
x(end) = a
默认n = 50
10a ,10b 间生成50个数据 在
x = logspace(a,b,n)
10a ,10b 间生成n个数据 在
x = logspace(a,pi)
10a , π 间生成n个数据 在
6、引用一维数组中的单个元素
x = 1 (Y − Y )
i =1 i
n
2
二、一维数组在二维绘图中的应用
1、plot(a,b,string) 、
a, b 都是一维数组,以 a 中元素为横坐标, b 中元素 都是一维数组, 中元素为横坐标, 为纵坐标作平面曲线。 必须具有相同长度 相同长度。 为纵坐标作平面曲线。 a, b 必须具有相同长度。string 是用 括起来的字符串,用来指定图形的属性( 单引号 括起来的字符串,用来指定图形的属性(点、线的形 状和颜色) 状和颜色) 属性可以全部指定, 属性可以全部指定,也 可以只指定其中某几个。 可以只指定其中某几个。 x=[0:0.2:2*pi]; 排列顺序任意
2、两点之间的距离
两点:A ( ax , a y , az ) ,B ( bx , by , bz ) AB = a - b =
a = [4,3,1] b = [5,2,3] AB = sqrt(sum((a - b).^2))
返回x中的最小值 返回x的最小值(c)及最小值在x中的位置 返回一向量,元素为x,y相同位置上的较小值
返回x的平均值 返回x中元素的中值 计算x中的数值的标准差
sum(x) cumsum(x) prod(x) cumprod(x) sort(x) length(x) numel(x)
计算x的所有元素的和 返回一个包含x的元素的累加和的向量, 其大小与x相同 计算x的元素的积 返回一个包含x的元素的累乘积的向量, 其大小与x相同 返回x中的元素按升序排序的向量 返回数组的长度(行数或列数种的较大 值) 返回数组元素的个数
默认 n = 100
在[a,b]区间内生成 n 个数据,包括a和b在内 若a,b为实数,等效于:
x = linspace(0,pi,10) x = linspace(1+i,100+100*i)
b−a x = a: :b n −1
5、用logspace()函数创建一维数组
x = logspace(a,b)
b = x(end:-1:1) c = x(1:2:end) d = x(2:2:end)
b=? c=?d=?
9、给一维数组中的子数组赋值
x = linspace(1,5) x([1,4]) = [2,7] x = linspace(1,5) s = [1,4] a = [2,7] x(s) = a
若x的元素均为实数,则x.’与x’的结果相同 x = (1:100)’
11、一维数组与一维数组的运算
两个一维数组之间进行运算,要求: 1、两个数组都为行数组(或都为列数组) 2、数组元素个数相同,
x+y x-y 对应位置的元素做 x.*y x./y C语言中,可 x.\y 使用循环语句完成 类似的操作 x.^y
2 2
x 2 3、绘制椭圆: + y = 1 4 − t /3 4、绘制衰减振荡曲线y = e sin 3t t ∈ [ 0, 4π ] 及它的包络线y0 = ± e
− t /3
2
。
三、一维数组在向量运算中的应用
在Matlab中,三维空间里的 三维向量(或点):
a = ax i + a y j + az k b = bx i + by j + bz k c = cx i + c y j + cz k
a = ax , a y , az
可表示为行向量 (或列向量):
b = bx , by , bz c = cx , c y , cz
1、向量的模(长度)
a = ax i + a y j + az k a = a +a +a
2 x 2 y 2 z
a = [4,3,1] d = sqrt(sum(a.*a)) 或: d = sqrt(sum(a.^2))
例:使用子图
x= 0:pi/10:2*pi; y1=sin(x) y2=cos(x) subplot(2,2,1); plot(x,y1); subplot(2,2,2); plot(x,y2);
被激活的子图在用户输入另 一个subplot或者figure命令之前 会一直保持被激活状态。 当一个新的subplot命令改变 了在图形窗口中的子图数量的时 候,原来的那些子图就被擦除掉 了,以便给新的子图腾出空间。 为了回到默认的模式并且在 整个图形窗口中只用一套坐标轴, 可以使用命令subplot(1,1,1)
ˆ Y = b0 + b1 X b1 =
∑( X
n i =1 n i =1
i
− X )(Yi − Y )
2
∑( Xi − X ) ∑(X
i =1 n
=
∑( X
n i =1 n i =1
i
− X ) Yi
2
∑( Xi − X )
b0 = Y − b1 X r=
i
− X )(Yi − Y )
2
∑(X
i =1
3、用plot函数同时绘制多条曲线
plot(x1,y1,’s1’,x2,y2,’s2’, …)
x1,y1,’s1’ 第一条曲线及其属性 x2,y2,‘s2’ 第二条曲线及其属性 属性可以不写 x= 0:pi/10:2*pi; y1=sin(x) y2=cos(x) plot(x,y1,x,y2);
Matlab:一维数组及其应用
一、一维数组 二、一维数组在二维绘图中的应用 三、一维数组在向量运算中的应用 四、一维数组在一元多项式运算中的应用
一、一维数组
• 数值数组(简称为数组)是Matlab中最重要的 一种内建数据类型 • 数组运算是Matlab软件定义的运算规则, 其目的是为了数据管理方便、操作简单、 指令形式自然和执行计算的有效。 • 无论在数组上施加什么运算(加减乘除或函 数),总认定那种运算对被运算数组中的每 个元素(Element)进行运算。
1、一维数组的两种形式
• 行数组:n个元素排成一行 又称为行向量(row vector) • 列数组:m个元素排成一列 又称为列向量(column vector) 一般情况下,向量指列向量
2、用方括号[ ]创建一维数组
• 整个数组放在方括号里 • 行数组元素用空格或逗号分隔 x = [2, pi/2, sqrt(3), 3+5i] • 列数组元素用分号分隔 y = [2;pi;3/4;j] • 标点符号一定要在英文状态下输入 • x = [] 生成空数组
例:使用hold绘制多个图形
x= 0:pi/10:2*pi; y1=sin(x) y2=cos(x) plot(x,y1); hold on; plot(x,y2);
5、在一个图形窗口中绘制多个子图
一个图形窗口可以包含多个子图,每个子图 拥有自己的坐标轴
subplot(m,n,p)
将一个绘图窗口分割成 m×n 个子图,并将 第 p 个子图选定为当前的绘图区域。 子图从最上边一行开始 ,从左至右、从上至下 依次编号
4、在已存在的图形上添加新图形
• 可以使用hold命令在一个已经存在得图形上添加 一个新的图形。 • hold on:在输入新的plot函数得时候,matlab不 会将现存得坐标轴删除,而是将新得曲线添加到 当前的坐标轴中。当新的数据超出了当前坐标限 的范围,matlab就将坐标轴重新刻度。 • hold off:将当前的图形窗口中的图形释放,用以 绘制新的图形。 • hold:实现hold设置的切换。 • ishold:查询hold当前是on还是off
6、在多个图形窗口中绘图
• 激活绘图窗口
figure(n)
• 关闭图形窗口
close(n) close all
• 擦除窗口的内容
clf:将一个图形窗口的内容擦除而不关闭它。 clf reset:将当前的图形窗口擦除,然后将诸如hold这 样的所有属性重新设置为它们的默认状态。
例:使用多个图形窗口
13、与一维数组相关的函数
max(x) 返回x中的最大值 [a,b] = max(x) 返回x的最大值(a)及最大值在x中的位置(b) 返回一向量,元素为x,y相同位置上的较大值 max(x,y) min(x) [c,d]= min(x) min(x,y) mean(x) median(x) std(x)
x= 0:pi/10:2*pi; y1=sin(x) y2=cos(x) figure(1); plot(x,y1); figure(2); plot(x,y2);
为了在一个已有的图形窗 口中绘制一个新的图形,这个 窗口必须是激活的,或者是当 前的图形窗口。
上机练习
1、绘制连续调制波形y = sin ( t ) sin ( 9t ) 0 ≤ t ≤ 2π 2、绘制圆:x + y = 4
将 a 赋值给数组 x 中的最后一个元素
x(8) = 6.5 会出现什么结果?
8、引用一维数组中的子数组
x = linspace(1,5) a = x([2,5,9]) x = linspace(1,5) s = [2,5,9] a = x(s)
引用一维数组x中的第2、5、9个元素, 将其赋值给变量 a
plot(x,cos(x),’k*-’);
黑色、 黑色、实线 离散点用星号
2、线型、标记和颜色
: -. -线型 实线 点线 点划线 虚线 点标记 . 点 v 下三角 o 小圆圈 ^ 上三角 x 叉号 < 左三角 + 加号 > 右三角 •星号 p 五角星 s 方格 h 六角星 d 菱形 b g r c m y k w 颜色 蓝色 绿色 红色 青色 棕色 黄色 黑色 白色
y1 y Y = 2 L yn f ( y1 ) f ( y2 ) f (Y ) = L f ( yn )
输入为列数组,则 输出也为列数组
,
10、一维数组的转置运算
x.’ x做转置(行→列,列→行)即xT † x’ x做共轭转置 即x
3、用冒号创建一维数组
• x = a:b • x = a:inc:b
a,b必须为实数 x = [a,a+inc,a+2*inc,…] a是数组x中的第一个元素,b不一定是数组x 的最后一个元素。 默认 inc = 1
4、用linspace()函数创建一维数组
x = linspace(a,b) x = linspace(a,b,n)
将2、7分别赋值给x的第1、4个元素
10、Matlab中的函数 在一维数组上的运算规则
Matlab中的很多函数都可以直接以数组作为输 入参数,函数输出也为数组。
X = [ x1 , x2 ,L , xn ]
输入为行数组,则 输出也为行数组
f ( X ) = f ( x1 ) , f ( x2 ) ,L , f ( xn )
加 减 乘 右除 左除 幂
y+x y-x y.*x y./x y.\x y.^x
12、一维数组与数的运算
若x为数组,c为数(实数或复数), x+c x–c c.*x 数组的每个元素 x./c 都与数c做 x.\c x.^c 加 减 乘 右除 左除 幂 c+x c-x c*x c./x c.\x c.^x
一维数组相关函数的应用
以线性拟合为例
测得铜导线在温度Ti下的电阻为Ri,编写一个M脚本文 件,用matlab提供的数组函数对数据进行线性拟合,求出斜率 、截距和相关系数,并与origin的拟合结果进行比较。 n 1 2 3 4 5 6 7 T(℃) 19.1 25.0 30.1 36.0 40.0 45.1 50.0 R(Ω) 76.30 77.80 79.25 80.80 82.35 83.90 85.10
引用数组 x 中的第 k 个元素, 将其赋值给变量 a
b = x(end)
引用数组 x 中的最后一个元素, 将其赋值给变量 b
c = x(8) 会出现什么结果?
7、一维数组中单个元素的赋值
x = 1:5 a = 1.5 k=3 x(k) = 0
将 0 赋值给数组 x 中的第 k 个元素
x(end) = a
默认n = 50
10a ,10b 间生成50个数据 在
x = logspace(a,b,n)
10a ,10b 间生成n个数据 在
x = logspace(a,pi)
10a , π 间生成n个数据 在
6、引用一维数组中的单个元素
x = 1 (Y − Y )
i =1 i
n
2
二、一维数组在二维绘图中的应用
1、plot(a,b,string) 、
a, b 都是一维数组,以 a 中元素为横坐标, b 中元素 都是一维数组, 中元素为横坐标, 为纵坐标作平面曲线。 必须具有相同长度 相同长度。 为纵坐标作平面曲线。 a, b 必须具有相同长度。string 是用 括起来的字符串,用来指定图形的属性( 单引号 括起来的字符串,用来指定图形的属性(点、线的形 状和颜色) 状和颜色) 属性可以全部指定, 属性可以全部指定,也 可以只指定其中某几个。 可以只指定其中某几个。 x=[0:0.2:2*pi]; 排列顺序任意
2、两点之间的距离
两点:A ( ax , a y , az ) ,B ( bx , by , bz ) AB = a - b =
a = [4,3,1] b = [5,2,3] AB = sqrt(sum((a - b).^2))
返回x中的最小值 返回x的最小值(c)及最小值在x中的位置 返回一向量,元素为x,y相同位置上的较小值
返回x的平均值 返回x中元素的中值 计算x中的数值的标准差
sum(x) cumsum(x) prod(x) cumprod(x) sort(x) length(x) numel(x)
计算x的所有元素的和 返回一个包含x的元素的累加和的向量, 其大小与x相同 计算x的元素的积 返回一个包含x的元素的累乘积的向量, 其大小与x相同 返回x中的元素按升序排序的向量 返回数组的长度(行数或列数种的较大 值) 返回数组元素的个数
默认 n = 100
在[a,b]区间内生成 n 个数据,包括a和b在内 若a,b为实数,等效于:
x = linspace(0,pi,10) x = linspace(1+i,100+100*i)
b−a x = a: :b n −1
5、用logspace()函数创建一维数组
x = logspace(a,b)
b = x(end:-1:1) c = x(1:2:end) d = x(2:2:end)
b=? c=?d=?
9、给一维数组中的子数组赋值
x = linspace(1,5) x([1,4]) = [2,7] x = linspace(1,5) s = [1,4] a = [2,7] x(s) = a