40
标标标标标标标标标 1 标标标标标 标 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 d im=1 标 6-7 标标标标标 x 标标标标标标标标标标标标标标 ,。

标准方差与相关系数 1 .求标准方差

  • Upload
    gerard

  • View
    195

  • Download
    2

Embed Size (px)

DESCRIPTION

标准方差与相关系数 1 .求标准方差 在 MATLAB 中,提供了计算数据序列的标准方差的函数 std 。对于向量 X , std(X) 返回一个标准方差。对于矩阵 A , std(A) 返回一个行向量,它的各个元素便是矩阵 A 各列或各行的标准方差。 std 函数的一般调用格式为: Y=std(A,flag,dim) - PowerPoint PPT Presentation

Citation preview

Page 1: 标准方差与相关系数 1 .求标准方差

标准方差与相关系数1 .求标准方差在 MATLAB 中,提供了计算数据序列的标准方差的函数 std 。对于向量 X , std(X) 返回一个标准方差。对于矩阵 A , s

td(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 。例 6-7 对二维矩阵 x ,从不同维方向求出其标准方差。

Page 2: 标准方差与相关系数 1 .求标准方差

2 .相关系数MATLAB 提供了 corrcoef 函数,可以求出数据的相关系数矩阵。 corrcoef 函数的调用格式为:corrcoef(X) :返回从矩阵 X 形成的一个相关系数矩阵。此相关系数矩阵的大小与矩阵

X 一样。它把矩阵 X 的每列作为一个变量,然后求它们的相关系数。corrcoef(X,Y) :在这里, X,Y 是向量,它们与 corrcoef([X,Y]) 的作用一样。

Page 3: 标准方差与相关系数 1 .求标准方差

例 生成满足正态分布的 10000×5 随机矩阵,然后求各列元素的均值和标准方差,再求这 5 列随机数据的相关系数矩阵。命令如下:X=randn(10000,5);M=mean(X)D=std(X)R=corrcoef(X)

Page 4: 标准方差与相关系数 1 .求标准方差

排序MATLAB 中对向量 X 是排序函数是 sort(X) ,函数返回一个对 X 中的元素按升序排列的新向量。sort 函数也可以对矩阵 A 的各列或各行重新排序,其调用格式为:[Y,I]=sort(A,dim)其中 dim 指明对 A 的列还是行进行排序。若 dim=1 ,则按列排;若 dim=2 ,则按行排。 Y 是排序后的矩阵,而 I 记录 Y 中的元素在 A 中位置。

Page 5: 标准方差与相关系数 1 .求标准方差

vubx vlb..,min

bAxtsRxxC nT线性优化

x=lp(C,A,b,vlb,vub)

Page 6: 标准方差与相关系数 1 .求标准方差
Page 7: 标准方差与相关系数 1 .求标准方差

[ 例 ] 最小值线性优化f(x)=-5x1-4x2-6x3

x1-x2+x3 20≦3x1+2x2+4x3 42≦

3x1+2x2 30≦(0 x1, 0 x2,0 x3)≦ ≦ ≦

%First, enter the coefficients:f = [-5; -4; -6] ;

A = [1 -1 1 3 2 4

3 2 0];b = [20; 42; 30];

lb = [0,0,0]; % x 的最小值 [0,0,0]ub = [inf,inf,inf];

%Next, call a linear programming routine:x= lp(f,A,b,lb,ub)

%Entering xx =

0.0000 15.0000 3.0000

Page 8: 标准方差与相关系数 1 .求标准方差

[ 例 ] 线性优化Min -400x1-1000x2-300x3+200x4

-2x2 + x3 + x4=0 2x1 +3x2 <=16 3x1 +4x2 <=24

x1, x2, x3, x4>=0; x3<=5

c=[-400,-1000,-300,200]; % 目标函数系数A=[0 -2 1 1; 2 3 0 0; 3 4 0 0]; % 约束条件系数

b=[0; 16; 24];xLB=[0,0,0,0]; % x 取值范围的最小值xUB=[inf,inf,5,inf]; % x 取值范围的最大值

x0=[0,0,0,0]; % x 取迭代初始值nEq=1; % 约束条件中只有一个 = 号 , 其余为 <=

x=lp(c,A,b,xLB,xUB,x0,nEq)disp([' 最优值为 : ',num2str(c*x)])

Page 9: 标准方差与相关系数 1 .求标准方差

0xg

)(..),(min

tsRxxf n

非线性优化

x=constr('f ',x0)

fminbnd

Page 10: 标准方差与相关系数 1 .求标准方差

计算下面函数在区间 (0, 1)内的最小值。

x

3

exlogxxcosx)x(f

[x,fval,exitflag,output]=fminbnd('(x^3+cos(x)+x*log(x))/exp(x)',0,1)

Page 11: 标准方差与相关系数 1 .求标准方差

在 [0, 5]上求下函数的最小值1)3x()x(f 3

解:先自定义函数:在MATLAB编辑器中建立M文件为:function f = myfun(x)f = (x-3).^2 - 1;保存为 myfun.m,然后在命令窗口键入命令:x=fminbnd(@myfun,0,5)

Page 12: 标准方差与相关系数 1 .求标准方差

[ 例 ] 最小值非线性优化Min f(x)=-x1x2x3,

-x1-2x2-2x3≤0,x1+2x2+2x3≤72,初值 : x = [10; 10; 10]

x = [10; 10; 10]% 第一步:编写 M 文件 myfun.m

function [f,g]=myfun(x)f=-x(1)*x(2)*x(3);

g(1)=-x(1)-2*x(2)-2*x(3);g(2)=x(1)+2*x(2)+2*x(3)-72;

% 第二步:求解% 在 MATLAB 工作窗中键入

x0=[10,10,10];x=constr('myfun',x0) % 即可

Page 13: 标准方差与相关系数 1 .求标准方差

[ 第一步:编写 M 文件 fxxgh.mfunction [F,G]=fxxgh(x)F=-x(1)*x(2);G(1)=(x(1)+x(2))*x(3)-120;

第二步:求解在 MATLAB 工作窗中键入x=[1,1,1]; % x 取迭代初始值options(13)=0; % 约束条件中有 0 个 = 号 , 其余为 <=XL=[0,0,2]; % x 取值范围的最小值XU=[inf;inf;inf]; % x 取值范围的最大值[x,options]=constr('fxxgh',x,options,XL,XU);options(8) % 输出最小值x

例 ] 非线性优化Min f(x)=-x1x2 (x1+ x2)x3<=0; x1, x2>=0; x3>=2;

Page 14: 标准方差与相关系数 1 .求标准方差

无约束多元函数最小值

)x(fminx

]x,,x,x[x n21

多元函数最小值的标准形式为

其中: x为向量,如

使用 fmins求其最小值

Page 15: 标准方差与相关系数 1 .求标准方差

求2221

321

31 xxx10xx4x2y

的最小值点X=fminsearch('2*x(1)^3+4*x(1)*x(2)^3-10*x(1)*x(2)+x(2)^2', [0,0])

或在 MATLAB 编辑器中建立函数文件function f=myfun(x)f=2*x(1)^3+4*x(1)*x(2)^3-10*x(1)*x(2)+x(2)^2;保存为 myfun.m ,在命令窗口键入X=fminsearch ('myfun', [0,0]) 或 >> X=fminsearch(@myfun, [0,0])

Page 16: 标准方差与相关系数 1 .求标准方差

利用函数 fminunc 求多变量无约束函数最小值 当函数的阶数大于 2 时,使用 fminunc 比 fminsearch 更有效,但当所选函数高度不连续时,使用 fminsearch 效果较好 求

2221

21 xxx2x3)x(f

的最小值

fun='3*x(1)^2+2*x(1)*x(2)+x(2)^2';x0=[1 1];[x,fval,exitflag,output,grad,hessian]=fminunc(fun,x0)

或用下面方法:fun=inline('3*x(1)^2+2*x(1)*x(2)+x(2)^2')

x0=[1 1]x=fminunc(fun,x0)

Page 17: 标准方差与相关系数 1 .求标准方差

有约束的多元函数最小值

)x(fminx

0)x(C 0)x(Ceq

bxA

beqxAeq ubxlb

非线性有约束的多元函数的标准形式为:sub.to

其中: x、 b、 beq、 lb、 ub是向量, A、 Aeq为矩阵,C(x)、 Ceq(x)是返回向量的函数,f(x)为目标函数,f(x)、 C(x)、 Ceq(x)可以是非线性函数

fmincon

Page 18: 标准方差与相关系数 1 .求标准方差

解:约束条件的标准形式为

求下面问题在初始点( 0 , 1 )处的最优解

212122

21 x5x2xxxx

0x)1x( 22

1 06x3x2 21

min

s.t

0x)1x( 22

1 6x3x2 21

212122

21 x5x2xxxx

min

s.t

Page 19: 标准方差与相关系数 1 .求标准方差

先在 MATLAB 编辑器中建立非线性约束函数文件:function [c, ceq]=mycon (x)c=(x(1)-1)^2-x(2);ceq=[ ]; % 无等式约束然后,在命令窗口键入如下命令或建立 M 文件:fun='x(1)^2+x(2)^2-x(1)*x(2)-2*x(1)-5*x(2)'; % 目标函数x0=[0 1];A=[-2 3]; % 线性不等式约束b=6;Aeq=[ ]; % 无线性等式约束beq=[ ];lb=[ ]; %x 没有下、上界ub=[ ];[x,fval,exitflag,output,lambda,grad,hessian]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,@mycon)

Page 20: 标准方差与相关系数 1 .求标准方差

二次规划问题

xfxHx21min

bxA

beqxAeq

buxbl

二次规划问题( quadratic programming)的标准形式为:sub.to

其中, H、 A、 Aeq为矩阵, f、 b、 beq、 lb、 ub、 x为向量

quadprog

Page 21: 标准方差与相关系数 1 .求标准方差

212122

21 x6x2xxxx2

1)x(fmin

2xx 21 2x2x 21

3xx2 21 21 x0,x0

xfxHx21)x(f

2111

H

62

f

2

1

xx

x

求解下面二次规划问题

sub.to

解:则,

Page 22: 标准方差与相关系数 1 .求标准方差

在 MATLAB 中实现如下:H = [1 -1;-1 2] ;f = [-2; -6] ;A = [1 1;-1 2; 2 1] ;b = [2; 2;3] ;lb = zeros(2,1) ;[x,fval,exitflag,output,lambda] = quadprog(H,f,A,b, [ ] ,[ ] ,lb)

Page 23: 标准方差与相关系数 1 .求标准方差

“ 半无限”有约束的多元函数最优解

x 、 b 、 beq 、 lb 、 ub 都是向量; A 、 Aeq 是矩阵; C(x) 、Ceq(x) 、是返回向量的函数, f(x) 为目标函数; f(x) 、 C(x) 、Ceq(x) 是非线性函数;为半无限约束,通常是长度为 2 的向量

fseminf

Page 24: 标准方差与相关系数 1 .求标准方差
Page 25: 标准方差与相关系数 1 .求标准方差

先建立非线性约束和半无限约束函数文件,并保存为 mycon.m :function [C,Ceq,K1,K2,S] = mycon(X,S)% 初始化样本间距:if isnan(S(1,1)), S = [0.2 0; 0.2 0];end% 产生样本集:w1 = 1:S(1,1):100;w2 = 1:S(2,1):100;% 计算半无限约束:K1 = sin(w1*X(1)).*cos(w1*X(2)) - 1/1000*(w1-50).^2 -sin(w1*X(3))-X(3)-1;K2 = sin(w2*X(2)).*cos(w2*X(1)) - 1/1000*(w2-50).^2 -sin(w2*X(3))-X(3)-1;% 无非线性约束:C = [ ]; Ceq=[ ];% 绘制半无限约束图形plot(w1,K1,'-',w2,K2,':'),title('Semi-infinite constraints')然后在 MATLAB 命令窗口或编辑器中建立 M 文件:fun = 'sum((x-0.5).^2)';x0 = [0.5; 0.2; 0.3]; % Starting guess[x,fval] = fseminf(fun,x0,2,@mycon)

Page 26: 标准方差与相关系数 1 .求标准方差
Page 27: 标准方差与相关系数 1 .求标准方差

])x(f ,)x(f ,)x(f ,)x(f ,)x(f[ 54321

304x40x48xx2)x(f 2122

211

22

222 x3x)x(f

18x3x)x(f 213

214 xx)x(f

8xx)x(f 215

求下列函数最大值的最小化问题

其中:

Page 28: 标准方差与相关系数 1 .求标准方差

先建立目标函数文件,并保存为 myfun.m : function f = myfun(x)f(1)= 2*x(1)^2+x(2)^2-48*x(1)-40*x(2)+304; f(2)= -x(1)^2 - 3*x(2)^2;f(3)= x(1) + 3*x(2) -18;f(4)= -x(1)- x(2);f(5)= x(1) + x(2) - 8;然后,在命令窗口键入命令:x0 = [0.1; 0.1]; % 初始值[x,fval] = fminimax(@myfun,x0)

Page 29: 标准方差与相关系数 1 .求标准方差

求上述问题的绝对值的最大值最小化问题。目标函数为:]|)x(f| ,|)x(f| ,|)x(f| ,|)x(f| ,|)x(f|[ 54321

解:先建立目标函数文件(与上例相同)然后,在命令窗口或编辑器中建立M文件:x0 = [0.1; 0.1]; % 初始点options = optimset('MinAbsMax',5); % 指定绝对值的最小化[x,fval] = fminimax(@myfun,x0,[ ],[ ],[ ],[ ],[ ],[ ],[ ],options)

Page 30: 标准方差与相关系数 1 .求标准方差

多目标规划问题

fgoalattain

Page 31: 标准方差与相关系数 1 .求标准方差

在大量的应用领域中,人们经常面临用一个解析函数描述数据 ( 通常是测量值 ) 的任务。对这个问题有两种方法。在插值法里,数据假定是正确的,要求以某种方法描述数据点之间所发生的情况。曲线拟合或回归是人们设法找出某条光滑曲线,它最佳地拟合数据,但不必要经过任何数据点。图 1 说明了这两种方法。连接数据点的实线描绘了线性内插,虚线是数据的最佳拟合。

曲 线 拟 合

0 0.2 0.4 0.6 0.8 1-2

0

2

4

6

8

10

12

x

y=f(x

)

Second Order Curve Fitting

Page 32: 标准方差与相关系数 1 .求标准方差

x=[0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1];y=[-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2]; n=2; % polynomial orderp=polyfit(x, y, n)

polyfit 的输出是一个多项式系数的行向量。其解是y = - 9.8108x2 + 20.1293x - 0.0317 。

为了将曲线拟合解与数据点比较,让我们把二者都绘成图。ezplot('-9.8108*x*x+20.1293*x-0.0317')xi=linspace(0, 1, 100); % x-axis data for plottingz=polyval(p, xi);

为了计算在 xi 数据点的多项式值,调用 MATLAB 的函数 polyval 。plot(x, y, ' o ' , x, y, xi, z, ' : ' )

画出了原始数据 x 和 y ,用 'o' 标出该数据点,在数据点之间,再用直线重画原始数据,并用点 ' : ' 线,画出多项式数据 xi 和 z 。xlabel(' x '), ylabel(' y=f(x) '), title(' Second Order Curve Fitting ')

Page 33: 标准方差与相关系数 1 .求标准方差

曲 线 拟 合 和 插 值 函 数polyfit(x, y, n) 对描述 n阶多项式 y=f(x)的数据进行最小二乘曲线拟合interp1(x, y, xo) 1维线性插值interp1(x, y, xo, ' spline ') 1维 3次样条插值interp1(x, y, xo, ' cubic ') 1维 3次插值interp2(x, y, Z, xi, yi) 2维线性插值interp2(x, y, Z, xi, yi, ' cubic ') 2维 3次插值interp2(x, y, Z, xi, yi, ' nearest ') 2维最近邻插值

Page 34: 标准方差与相关系数 1 .求标准方差

x1=linspace(0, 2*pi, 60);x2=linspace(0, 2*pi, 6);plot(x1, sin(x1), x2, sin(x2), ' - ') xlabel(' x '), ylabel(' sin(x) ')

title(' Linear Interpolation ' )

Page 35: 标准方差与相关系数 1 .求标准方差

若不采用直线连接数据点,我们可采用某些更光滑的曲线来拟合数据点。最常用的方法是用一个 3 阶多项式,即 3 次多项式,来对相继数据点之间的各段建模,每个 3 次多项式的头两个导数与该数据点相一致。这种类型的插值被称为 3 次样条或简称为样条。函数 interp1 也能执行 3 次样条插值。

Page 36: 标准方差与相关系数 1 .求标准方差

hours=1:12; % index for hour data was recordedtemps=[5 8 9 15 25 29 31 30 22 25 27 24]; % recorded temperaturesplot(hours, temps, hours, temps,' + ') % view temperaturestitle(' Temperature ')xlabel(' Hour '), ylabel(' Degrees Celsius ')

为了说明一维插值,考虑下列问题, 12 小时内,一小时测量一次室外温度。数据存储在两个 MATLAB 变量中。

t=interp1(hours, temps, 9.3, ' spline ') % estimate temperature at hour=9.3

t=interp1(hours, temps, 4.7, ' spline ') % estimate temperature at hour=4.7

t=interp1(hours, temps, [3.2 6.5 7.1 11.7], ' spline ')

Page 37: 标准方差与相关系数 1 .求标准方差

意,样条插值得到的结果,与上面所示的线性插值的结果不同。因为插值是一个估计或猜测的过程,其意义在于,应用不同的估计规则导致不同的结果。

Page 38: 标准方差与相关系数 1 .求标准方差

样条插值是对数据进行平滑 , 也就是,给定一组数据,使用样条插值在更细的间隔求值。例如,hours=1:12; % index for hour data was recordedh=1:0.1:12; % estimate temperature every 1/10 hourtemps=[5 8 9 15 25 29 31 30 22 25 27 24];t=interp1(hours, temps, h) ;plot(hours, temps, ' - ' , hours, temps, ' + ' , h, t) % plot comparative resultstitle(' Springfield Temperature ')xlabel(' Hour '), ylabel(' Degrees Celsius ')

Page 39: 标准方差与相关系数 1 .求标准方差

2 二维数据插值在 MATLAB 中,提供了解决二维插值问题的函数 interp2 ,其调用格式为:

Z1=interp2(X,Y,Z,X1,Y1,'method')其中 X,Y 是两个向量,分别描述两个参数的采样点,Z 是与参数采样点对应的函数值, X1,Y1 是两个向量或标量,描述欲插值的点。 Z1 是根据相应的插值方法得到的插值结果。 method 的取值与一维插值函数相同。 X,Y,Z 也可以是矩阵形式。同样, X1,Y1 的取值范围不能超出 X,Y 的给定范围,否则,会给出“ NaN” 错误。

Page 40: 标准方差与相关系数 1 .求标准方差

例 某实验对一根长 10 米的钢轨进行热源的温度传播测试。用 x 表示测量点 0:2.5:10( 米 ) ,用 h 表示测量时间 0:30:60( 秒 ) ,用 T 表示测试所得各点的温度 ( )℃ 。试用线性插值求出在一分钟内每隔 20 秒、钢轨每隔 1 米处的温度 TI 。命令如下:

x=0:2.5:10;h=[0:30:60]';T=[95,14,0,0,0;88,48,32,12,6;67,64,54,48,41];xi=[0:10];hi=[0:20:60]';TI=interp2(x,h,T,xi,hi)