Matlab第5章数据处理与多项式计算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【例5.6】某次射击选拔比赛中小明与小华的10次射击 成绩(单位:环)记录在矩阵a中,试比较两人的成绩。
a=[7,4,9,8,10,7,8,7,8,7;7,6,10,5,9,8,10,9,5,6]'; mean(a) ans = 7.5000 7.5000 std(a) ans = 1.5811 1.9579 两人成绩的平均值相同,但小明的成绩的标准方差较小, 说明小明的成绩波动较小,成绩更稳定。
2 10 s 1 2 2 ... 2 【例5.5】求
的值。
命令如下: x=[1,ones(1,10)*2] x= 1 2 2 2 2 2 2 2 2 2 y=cumprod(x) y= Columns 1 through 7 1 2 4 8 16 Columns 8 through 11 128 256 512 1024 s=sum(y) s= 2047
设时间变量t为一行向量,c为一个两列矩阵,其中第1列存 放身长,第2列储存体重。命令如下: h =0:1:6; t=[50.6,56.5,59.6,62.3,64.6,65.9,68.1; 3.27,4.97,5.95,6.73,7.32,7.70,8.22]'; XI =0.5:1:5.5 XI = 0.5000 1.5000 2.5000 3.5000 4.5000 5.5000 YI=interp1(h,t,XI,'spline') %用3次样条插值计算
【例5.1】分别求矩阵 54 90 列和各行元素中的最大值。 23
86 32 12
453 64 71
45 54 18
中各
x=[54,86,453,45;90,32,64,54;-23,12,71,18]; [y,l]=max(x) %求矩阵x中各列元素的最大值及其这些元素的行下标 y= 90 86 453 54 l= 2 1 1 2 y=max(x,[ ],2) %命令中dim=2,故查找操作在各行中进行 y= 453 90 71
求矩阵最小值的函数是min,其用法和max完全相同。
2.两个向量或矩阵对应元素的比较
函数max和min还能对两个同型的向量或矩阵进行比较。 max函数调用格式如下: ● max(A,B):A、B是两个同型的向量或矩阵,返回值是与 A、B同型的向量或矩阵,其中的每个元素等于A、B对应 元素的较大者。 ● max(A,n):n是一个标量,返回值是与A同型的向量或矩 阵,其中的每个元素等于A对应元素和n中的较大者。
第5章 数据处理与多项式计算
【本章学习目标】
● ● ● ● 掌握数据统计和分析的方法。 掌握数值Leabharlann Baidu值与曲线拟合的方法及其应用。 掌握快速傅立叶变换的应用方法。 掌握多项式的常用运算。
5.1 数据统计处理
5.1.1 最大值和最小值 1.求最大值和最小值 ● max(A):如果A是向量,则返回向量A的最大值。如果A 中包含复数元素,则按模取最大值。如果A是矩阵,则返 回一个行向量,向量的第i个元素是矩阵A的第i列上的最大 值。 ● [Y,U] = max(A):如果A是向量,则返回向量A的最大值存 入Y,最大值的序号存入U。如果A中包含复数元素,则按 模取最大值。如果A是矩阵,则Y向量记录A的每列的最大 值,U向量记录每列最大值的行号。 ● max(A,[],dim):仅用于矩阵。dim取1或2。dim取1时, 该函数和max(A)完全相同;dim取2时,该函数返回一个 列向量,其第i个元素是A矩阵的第i行上的最大值。
【例5.9】表5.3所示为我国0~6个月婴儿的体重、身 长参考标准,用3次样条插值分别求得婴儿出生后半 个月到5个半月每隔1个月的身长、体重参考值。
表5.3 我国婴儿体重、身长计量表
出生 身长(cm) 50.6 体重(kg) 3.27 1月 56.5 4.97 2月 59.6 5.95 3月 62.3 6.73 4月 64.6 7.32 5月 65.9 7.70 6月 68.1 8.22
【例5.4】分别求向量x=[9 4 7 -8 2]与y=[9 4 7 -8 2 10]的平均值和中值。
x=[9,4,7,-8,2]; mean(x) ans= 2.8000 median(x) ans= 4 y=[9,4,7,-8,2,15]; mean(y) ans= 4.8333 median(y) ans= 5.5000 % 奇数个元素
4 12 13 7
8
5 做各种排序。 6 13
5.2 数据插值
在工程测量和科学实验中,所得到的数据通常都是离 散的。如果要得到这些离散点以外的其他点的数值, 就需要根据这些已知数据进行估算,即插值。 测量的数据点反映了函数关系y=f(x),但并不知道f(x) 的解析式,数据插值的任务就是根据条件构造函数 y=g(x),g(x)光滑过渡。 插值函数g(x)一般由线性函数、多项式、样条函数或 这些函数的分段函数充当。 根据被插值函数的自变量个数,插值分为一维插值、 二维插值、多维插值等。 根据是用分段直线、多项式或样条函数来作为插值函 数,插值分为线性插值、多项式插值、样条插值等。
【例5.8】对二维矩阵 1
命令如下: A=[1,-8,5;4,12,6;13,7,-13]; sort(A,2,‘descend’) %对A的每行按降序排序 Ans= 5 1 -8 12 6 4 13 7 -13 [X,I]=sort(A) %对A按列排序,并将每个元素所在行号送矩阵I X= I= 1 -8 -13 1 1 3 4 7 5 2 3 1 13 12 6 3 2 2
5.1.2 求和与求积
数据序列求和的函数是sum。sum函数的调用格 式如下。
–● sum(A):如果A是一个向量,则返回向量各元 素的和。如果A是一个矩阵,则返回一个行向量,其第i 个元素是A的第i列的元素和。 –● sum(A,dim):当dim为1时,该函数等同于 sum(A);当dim为2时,返回一个列向量,其第i个元 素是A的第i行的各元素之和。
2.相关系数
相关系数用来衡量两组数据之间的线性相关程度。 corrcoef函数用于求数据的相关系数矩阵。 ● corrcoef(X,Y):求向量X和Y的相关系数。 ● corrcoef(X):返回从矩阵X形成的一个相关系 数矩阵。它把矩阵X的每列作为一个变量,然后 求它们的相关系数。
【例5.7】随机抽取15名健康成人,测定血液的凝血 酶浓度及凝血时间,分析凝血酶浓度与凝血时间之间 的相关性。 命令如下: X=[1.1,1.2,1.0,0.9,1.2,1.1,0.9,0.6,1.0,0.9,1.1,0.9,1.1, 1,0.7]'; Y=[14,13,15,15,13,14,16,17,14,16,15,16,14,15,17]'; R=corrcoef(X,Y) R= 1.0000 -0.9265 -0.9265 1.0000 求得的R说明凝血酶浓度与凝血时间之间的相关程度较 高。
5.1.3 平均值和中值
数据序列的平均值指的是算术平均值。中值是指在数据序列中 其值的大小恰好处在中间的元素。例如: 数据序列 2,5,7,9,12的中值为7 如果数据为偶数个,则中值等于中间的两项之平均值。例如, 数据序列 2,5,6,7,9,12中,处于中间的数是6和7,故 其中值为此两数之平均值6.5。 求数据序列平均值的函数是mean,mean函数的调用格式如下。 ● mean(A):如果A是一个向量,则返回向量的算术平均值。如 果A是一个矩阵,则返回一个行向量,其第i个元素是A的第i列 的算术平均值。 ● mean(A,dim):当dim为1时,该函数等同于mean(A);当dim 为2时,返回一个列向量,其第i个元素是A的第i行的算术平均 值。 求数据序列中值的函数是median,其用法和mean完全相同。
2
32
64
5.1.5 标准方差与相关系数
1.求标准方差 方差描述了一组数据波动的大小,方差越小,数据波 动越小。在MATLAB中,提供了计算数据序列的标 准方差的函数std。对于向量X,std(X)返回一个标准 方差。对于矩阵A,std(A)返回一个行向量,它的各 个元素便是矩阵A各列或各行的标准方差。std函数的 一般调用格式为: Y=std(A,flag,dim) 其中flag取0或1,当flag = 0时,按σ1所列公式计算 标准方差;当flag = 1时,按σ2所列公式计算标准方 差。dim取1或2,当dim = 1时,求各列元素的标准 方差;当dim = 2时,则求各行元素的标准方差。默 认flag = 0,dim = 1。
【例5.2】已知 , 求矩阵x、y所有同一位置上的较大元素构成的 新矩阵p。
45 73 34 84
443 x 67
43 43
65 y 61
34 326
x=[443,45,43;67,34,-43]; y=[65,73,34;61,84,326]; p=max(x,y) p= 443 73 43 67 84 326
% 偶数个元素
5.1.4 累加和与累乘积
所谓累加和或累乘积,是指从数据序列的第1元素开始直 到当前元素进行累加或累乘,作为结果序列的当前元素值。 在MATLAB中,使用cumsum和cumprod函数求得向量 和矩阵元素的累加和与累乘积向量。cumsum函数的调用 格式如下。 ● cumsum(A):如果A是一个向量,则返回向量的累加和。 如果A是一个矩阵,则返回一个矩阵,其第i列是A的第i列 的累加和向量。 ● cumsum(A,dim):当dim为1时,该函数等同于 cumsum(A);当dim为2时,返回一个矩阵,其第i行是A 的第i行的累加和向量。 求累乘积的函数是cumprod,其用法和cumsum完全相 同。
5.2.1 一维数据插值
若已知的数据集是平面上的一组离散点集,即被插值函数是一个单变 量函数,则数值插值问题称为一维插值。在MATLAB中,实现插值的 函数是interp1,其调用格式为 Y1=interp1(X,Y,X1,'method') 函数根据X、Y的值,计算函数在X1处的值。X、Y是两个等长的已知 向量,分别描述采样点和样本值,X1是一个向量或标量,描述欲插值 的点,Y1是一个与X1等长的插值结果。method是插值方法,允许的 取值如下: ● 'linear':线性插值。线性插值是默认的插值方法。它是把与插值点靠 近的两个数据点用直线连接,然后在直线上选取对应插值点的数据。 ● 'nearest':最近点插值。根据已知插值点与已知数据点的远近程度进 行插值。插值点优先选择较近的数据点进行插值操作。 ● 'cubic':3次多项式插值。根据已知数据求出一个3次多项式,然后根 据该多项式进行插值。 ● 'spline':3次样条插值。所谓3次样条插值,是指在每个分段(子区 间)内构造一个3次多项式,使其插值函数除满足插值条件外,还要 求在各节点处具有光滑的条件。
5.1.6 排序
MATLAB提供了对向量X进行排序的函数sort(X), 函数返回一个对X中的元素按升序排列的新向量。 sort函数也可以对矩阵A的各列或各行重新排序, 其调用格式为 [Y,I]=sort(A,dim,mode) 其中Y是排序后的矩阵,而I记录Y中的元素在A中 的位置。dim指明对A的列还是行进行排序,若 dim = 1,则按列排;若dim = 2,则按行排。 mode指明按升序还是降序排序,'ascend'为升序, 'descend'为降序。dim默认取1,mode默认取 'ascend'。
数据序列求积的函数是prod,其用法和sum完全 相同。
【例5.3】已知 ,求矩阵A的每 行元素的成绩和全部元素的乘积。
10 11
1 A 5 9
2 6
3 7
4 8 12
A=[1:4;5:8;9:12]; S=prod(A,2) %求每行元素的乘积 S= 24 1680 11880 P=prod(S) %求全部元素的乘积,即12! P= 479001600