您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 第六章-MATLAB数据处理
Matlab程序设计与应用Matlab程序设计与应用6.1数据处理与多项式计算6.1.1数据统计与分析1.求矩阵最大元素和最小元素MATLAB提供的求数据序列的最大值和最小值的函数分别为max和min,两个函数的调用格式和操作过程类似。(1)求向量的最大值和最小值y=max(X):返回向量X的最大值存入y,如果X中包含复数元素,则按模取最大值。Matlab程序设计与应用[y,I]=max(X):返回向量X的最大值存入y,最大值的序号存入I,如果X中包含复数元素,则按模取最大值。求向量X的最小值的函数是min(X),用法和max(X)完全相同。例求向量x的最大值。命令如下:x=[-43,72,9,16,23,47];y=max(x)%求向量x中的最大值[y,l]=max(x)%求向量x中的最大值及其该元素的位置Matlab程序设计与应用(2)求矩阵的最大值和最小值求矩阵A的最大值的函数有3种调用格式,分别是:max(A):返回一个行向量,向量的第i个元素是矩阵A的第i列上的最大值。[Y,U]=max(A):返回行向量Y和U,Y向量记录A的每列的最大值,U向量记录每列最大值的行号。Matlab程序设计与应用max(A,[],dim):dim取1或2。dim取1时,该函数和max(A)完全相同;dim取2时,该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最大值。求最小值的函数是min,其用法和max完全相同。Matlab程序设计与应用例6.1分别矩阵A中各列和各行元素中的最大值,并求整个矩阵的最大值和最小值。13567825632357825563101AA=[13,-56,78;25,63,-235;78,25,563;1,0,-1];max(A,[],2)%求每行最大元素min(A,[],2)%求每行最小元素max(A)%求每列最大元素min(A)%求每列最小元素max(max(A))%求整个矩阵的最大元素。也可使用命令:max(A(:))min(min(A))%求整个矩阵的最小元素。也可使用命令:min(A(:))Matlab程序设计与应用(3)两个向量或矩阵对应元素的比较函数max和min还能对两个同型的向量或矩阵进行比较,调用格式为:U=max(A,B):A,B是两个同型的向量或矩阵,结果U是与A,B同型的向量或矩阵,U的每个元素等于A,B对应元素的较大者。U=max(A,n):n是一个标量,结果U是与A同型的向量或矩阵,U的每个元素等于A对应元素和n中的较大者。min函数的用法和max完全相同。Matlab程序设计与应用例6.2求两个2×3矩阵x,y所有同一位置上的较大元素构成的新矩阵p。x=[1,8,4,2;9,6,2,5;3,6,7,1]y=[1,5,4,1;6,6,3,5;3,2,4,8]f=5.5p=max(x,y)p=max(x,f)Matlab程序设计与应用2.求矩阵的平均值和中值求数据序列平均值的函数是mean,求数据序列中值的函数是median。两个函数的调用格式为:mean(X):返回向量X的算术平均值。median(X):返回向量X的中值。mean(A):返回一个行向量,其第i个元素是A的第i列的算术平均值。median(A):返回一个行向量,其第i个元素是A的第i列的中值。mean(A,dim):当dim为1时,该函数等同于mean(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的算术平均值。median(A,dim):当dim为1时,该函数等同于median(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的中值。一组数据中居于中间的数(特别注意:这组数据之前已经经过升序排列Matlab程序设计与应用例已知x=[1842;9625;3671],从不同维方向求出其平均值和中值。median(x)median(x,1)%按列方向,求数组的中值•median(x,2)%按行方向,求数组的中值•mean(x)mean(x,1)%按列方向,求数组的平均值•mean(x,2)%按行方向,求数组的平均值Matlab程序设计与应用3.矩阵元素求和与求积数据序列求和与求积的函数是sum和prod,其使方法类似。设X是一个向量,A是一个矩阵,函数的调用格式为:sum(X):返回向量X各元素的和。prod(X):返回向量X各元素的乘积。sum(A):返回一个行向量,其第i个元素是A的第i列的元素和。Matlab程序设计与应用prod(A):返回一个行向量,其第i个元素是A的第I列的元素乘积。sum(A,dim):当dim为1时,该函数等同于sum(A);当dim为2时,返回一个列向量,其第I个元素是A的第i行的各元素之和。prod(A,dim):当dim为1时,该函数等同prod(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的各元素乘积。Matlab程序设计与应用例6.3求矩阵A的每行元素的和,乘积和全部元素的和及乘积。A=[1,2,3,4;5,6,7,8;9,10,11,12];sum(A)sum(A,1)%求数组各列元素的和sum(A,2)%求数组各行元素的和sum(sum(A))%求数组所有元素的和Matlab程序设计与应用prod(A)prod(A,1)%求数组各列元素的乘积prod(A,2)%求数组各行元素的乘积prod(prod(A))%求数组所有元素的乘积S=prod(A,2)%求数组各行元素的乘积prod(S)%求A的全部元素的乘积。也可以使用命令prod(A(:))Matlab程序设计与应用4.矩阵元素累加和与累乘积在MATLAB中,使用cumsum和cumprod函数能方便地求得向量和矩阵元素的累加和与累乘积向量,函数的调用格式为:cumsum(X):返回向量X累加和向量。cumprod(X):返回向量X累乘积向量。cumsum(A):返回一个矩阵,其第i列是A的第i列的累加和向量。cumprod(A):返回一个矩阵,其第i列是A的第i列的累乘积向量。cumsum(A,dim):当dim为1时,该函数等同于cumsum(A);当dim为2时,返回一个矩阵,其第i行是A的第i行的累加和向量。cumprod(A,dim):当dim为1时,该函数等同于cumprod(A);当dim为2时,返回一个向量,其第i行是A的第i行的累乘积向量。Matlab程序设计与应用例已知a=[123;396;4108;407],求矩阵a的每行、每列元素的乘积和全部元素的累加和。cumsum(a)%求矩阵的各列元素的累加和cumsum(a,2)%求矩阵的各行元素的累加和cumprod(a)cumprod(a,1)%求矩阵的各列元素的累乘积cumprod(a,2)%求矩阵的各行元素的累乘积Matlab程序设计与应用例求向量X=(1!,2!,3!,…,10!)。X=cumprod(1:10)Matlab程序设计与应用5.求标准方差在MATLAB中,提供了计算数据序列的标准方差的函数std。对于向量X,std(X)返回一个标准方差。对于矩阵A,std(A)返回一个行向量,它的各个元素便是矩阵A各列或各行的标准方差。std函数的一般调用格式为:Y=std(A,flag,dim)其中dim取1或2。当dim=1时,求各列元素的标准方差;当dim=2时,则求各行元素的标准方差。flag取0或1,当flag=0时,按σ1所列公式计算标准方差,当flag=1时,按σ2所列公式计算标准方差。缺省flag=0,dim=1。Matlab程序设计与应用例6.4已知a=[123;396;4108;407],从不同维方向求出其标准方差。std(a)std(a,0,1)%按列方向求矩阵a的标准方差std(a,1,1)%按列方向求矩阵a的标准方差std(a,0,2)%按行方向求矩阵a的标准方差std(a,1,2)%按列方向求矩阵a的标准方差a=[123;396;4108;407]%产生一个四维矩阵aMatlab程序设计与应用6.相关系数MATLAB提供了corrcoef函数,可以求出数据的相关系数矩阵。corrcoef函数的调用格式为:corrcoef(X):返回从矩阵X形成的一个相关系数矩阵。此相关系数矩阵的大小与矩阵X一样。它把矩阵X的每列作为一个变量,然后求它们的相关系数。corrcoef(X,Y):在这里,X,Y是向量,它们与corrcoef([X,Y])的作用一样。Matlab程序设计与应用例6.5生成满足正态分布的10000×5随机矩阵,然后求各列元素的均值和标准方差,再求这5列随机数据的相关系数矩阵。命令如下:X=randn(10000,5);M=mean(X)D=std(X)R=corrcoef(X)Matlab程序设计与应用7.排序MATLAB中对向量X是排序函数是sort(X),函数返回一个对X中的元素按升序排列的新向量。sort函数也可以对矩阵A的各列或各行重新排序,其调用格式为:[Y,I]=sort(A,dim)其中dim指明对A的列还是行进行排序。若dim=1,则按列排;若dim=2,则按行排。Y是排序后的矩阵,而I记录Y中的元素在A中位置。Matlab程序设计与应用例4-8已知a=[123;396;4108;407],对矩阵排序。sort(a,1)sort(a,1,'ascend')%对矩阵a的各列进行升序排列sort(a,2)sort(a,2,'ascend')%对矩阵a的各行进行升序排列sort(a,1,'descend')%对矩阵a的各列进行降序排列sort(a,2,'descend')%对矩阵a的各行进行降序排列Matlab程序设计与应用一维插值的定义已知n+1个节点,,1,0(),(njyxjj其中jx互不相同,不妨设),10bxxxan求任一插值点)(*jxx处的插值.*y0x1xnx0y1y节点可视为由()yfx产生,,f表达式复杂,,或无封闭形式,,或未知.。*x*y6.1.2数据插值1.一维数据插值Matlab程序设计与应用构造一个(相对简单的)函数(),ygx通过全部节点,即()(0,1,)jjgxyjn再用()gx计算插值,即**().ygx0x1xnx0y1y*x*yMatlab程序设计与应用在MATLAB中,实现这些插值的函数是interp1,其调用格式为:Y1=interp1(X,Y,X1,'method')函数根据X,Y的值,计算函数在X1处的值。X,Y是两个等长的已知向量,分别描述采样点和样本值,X1是一个向量或标量,描述欲插值的点,Y1是一个与X1等长的插值结果。method是插值方法,允许的取值有‘linear’、‘nearest’、‘cubic’、‘spline’。Matlab程序设计与应用用MATLAB作插值计算一维插值函数:yi=interp1(x,y,xi,'method')插值方法被插值点插值节点xi处的插值结果‘nearest’:最邻近插值‘linear’:线性插值;‘spline’:三次样条插值;‘cubic’:立方插值。缺省时:分段线性插值。注意:所有的插值方法都要求x是单调的,并且xi不能够超过x的范围。Matlab程序设计与应用注意:X1的取值范围不能超出X的给定范围,否则,会给出“NaN”错误。例用不同的插值方法计算在sinx在π/2点的值。yi=interp1(x,y,pi/2)x=0:0.2:pi;y=sin(x);yi=interp1(x,y,pi/2,'nearest')yi=interp1(x,y,pi/2,‘spline')yi=interp1(x,y,pi/2,'linear')yi=interp1(x,y,pi/2,‘cubic')Matlab程序设计与应用2、二维数据插值xyO(1)二维插值的定义Matlab程序设计与应用已知mn个节点其中互不相同,不妨设构造一个二元
本文标题:第六章-MATLAB数据处理
链接地址:https://www.777doc.com/doc-5926672 .html