Matlab软件使用简介_第1页
Matlab软件使用简介_第2页
免费预览已结束,剩余66页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Matlab软件使用简介一、基本内容1.向量的产生基本格式:start: step: end (step缺省时为1)x=l:5x=0:0.1:2*pidot向量点集cross向量叉集 *对应元素乘积Matlab的每条命令后, 若为逗号或无标点符号, 则显示命令的结果; 若命 令后为分号,则禁止显示结果。linspace线性等分向量a=linspace(0,2*pi,100)logspace对数等分向量a=logspace(0,2*pi,100)100为插入点数( (99等分),默认值为100 2.矩阵的输入约定:(1)元素之间用空格或逗号隔开;(2)用中括号()把所有元素括起来;(3)用分号(

2、 (;) )说明行结束。矩阵输入时, 按Entei键表示开始输入新的一行, 输入矩阵时, 要求所有 的行具有相同的列。例如:a=l 2 3; 4,5 6; 7 8,9该矩阵一直保存在工作空间,直至被修改。x=l:6y=sin(x)z=cos(x)b=x;y;z特殊矩阵:a=产生一个空矩阵b=zeros(m,n)产生一个m行、n列的零矩阵c=ones(m,n)产生一个m行n列的元素全为1的矩阵d=eye(m,n)产生一个m行、n列的单位矩阵3 大矩阵中抽取小矩阵cl=b(:,l:2); c2=b(:,5:6); d=cl,c2d=cl;c2或d=b(:,l:2,5:6)4.固定变量(1) ans

3、:在没有定义变量名时,系统默认变量名为ans;(2) eps:容许误差,非常小的数;(3) pi:即圆周率兀;i:虚数单位;(5) inf:表示正无穷大,由1/0运算产生;(6) NaN:表示不定值,由inf/inf或0/0运算产生。5 基本运算5.1算算术运算符+加减 *矩阵乘法*数组乘(对应元素相乘)A矩阵幕八数组幕(各个元素求幕)./数组除(对应元素除)左除或反斜杠/右除或斜杠如果a为一个非奇异矩阵:ab = inv(a)*b:表示a*x=b的解;a/b = b*inv(a): 表示项x*a=b的解。例如:a=l 2 3; 4 2 6; 7 4 9b=4;l;2ab5.2 2.2关系运算

4、符=等号不等号 v 小于 大于=大于或等于5.3逻辑运算符&逻辑与I逻辑或逻辑非xor异或any有非零元则为真all所有元素均非零则为真6.矩阵的基本操作转置inv矩阵求逆det行列式的值v d=eig(a)特征值和特征向量rank秩trace迹size矩阵的行数和列数diag对角矩阵和矩阵对角线fliplr从左自右翻转矩阵flipud从上到下翻转矩阵roy90矩阵翻转90度tril矩阵的下三角triu矩阵的上三角7.常用函数(1) clc清除指令窗口(2) dear从内存中清除变量和函数(3) who列出工作内存中的变量名(4) whos列出工作内存中的变量详细信息(4) pause

5、二、绘图函数暂停1. plot是绘制一维曲线的基本函数, 但在使用此函数之前, 我们需先定义 曲线上每一点的x及y座标。下例可画出一条正弦曲线:x=linspace(0,2*pi, 100);% 100个点的x座标y=sin(x);%对应的y座标plot(x,y);若要画出多条曲线,只需将座标对依次放入plot函数即可plot(x,sin(x), x,cos(x);若要改变颜色,在座标对后面加上相关字串即可:plot(x, sin(x), c*, x, cos(x), g);若要同时改变颜色及图线型态( (Line style),也是在座标对后面加上相关 字串即可:plot(x, sin(x)

6、, co*, x, cos(x), g*)plot绘图函数的参数符号颜色符号线形符号线形y黄色点 虚线m洋红色O圆d菱形c青色X叉号向右二角形r红色+加号 In D:Matlabpujunlx0720.m at line 4x =1.0e+016 *0.40531.4862 1.3511说明:结果中的警告是由于系数行列式为零产生的。可以通过A*X验证其正确性。(2) Cholesky分解若A为对称正定矩阵, 则Cholesky分解可将矩阵A分解成上三角矩阵和 其转置的乘积,即:A A = = R R、R R其中R为上三角阵。方程A*X=b变成RR氷氷 R R 汰汰 X=bX=b所以X X =

7、= R(RR(Rf fb)b)R = chol(X)(3) QR分解对于任何长方矩阵A,都可以进行QR分解,其中Q为正交矩阵,R为上三角矩阵的初等变换形式,即:A=QR方程A*X=b变形成QRX=b所以上例中Q,R=qr(A)X=R(Qb)X=R(QB)说明: 这三种分解, 在求解大型方程组时很有用。 其优点是运算速度快、可以节省磁盘空间、节省内存。5.2求线性齐次方程组的通解在Matlab中,函数null用来求解零空间,即满足A X=0的解空间,实 际上是求出解空间的一组基(基础解系)。格式z = null% z的列向量为方程组的正交规范基,满足Z Zf fxZ=IxZ=Io oz z =

8、=阳(4)% z的列向量是方程AX=O的有理基x x + +2X2+2X3+ 兀4 = 0例 求解方程组的通解:2“ +*2 - 2 -2勺=0 x, 4X33X4= 0解:A=12 2 1;21 2 -2;1 4 3;format rat%指定有理式格式输出B=iwll(A,T)%求解空间的有理基运行后显示结果如下:B =25/3-2 4/31001或通过行最简行得到基: B=rref(A)leOOOO020000-1.666701.00002.00001.33330000即可写出其基础解系(与上面结果一致)。写出通解:syms kl k2X=kl*B(:,l)+k2*B(:,2)%写出方程

9、组的通解pretty(X)%让通解表达式更加精美运行后结果如下:X =2*kl+5/3*k2 2*kl 4/3*k2klk2%下面是其简化形式2kl + 5/3k2 -2kl - 4/3k2 kl k25 3求非齐次线性方程组的通解非齐次线性方程组需要先判断方程组是否有解,若有解,再去求通解。因此,步骤为:第一步:判断AX=b是否有解,若有解则进行第二步第二步:求AX=b的一个特解第三步:求AX=O的通解第四步:AX二b的通解=AX=O的通解+AX=b的一个特解。Xj 2X2+3X3= 1例 求解方程组3X - *2+5*3 - 3乞=22x2xx x+ *2 + 2X4= 3解:见ex06.

10、mX +兀2 3x x4 4=l=l例 求解方程组的通解:3曲-*2 - 3屯+4心=4x, + 5X2 9X3 8X4= 0解法一:在Matlab编辑器中建立M文件如下:A=l 1 3 -1;3-3 4;15 9 9-8;b=l 4 01;B=A b;n=4;R_A=rank(A)R_B=rank(B) format rat if R_A=R_B&R_A=nX=Ab01elseif R_A=R_B &R_AvnX=AbC=null(A,T)else X=,Equation has no solves1end运行后结果显示为:R_A =2R_B =2Warning: Rank

11、deficient, rank = 2 tol =8.8373e-015. In ex07 at 13X =00 8/153/5C =3/2-3/43/27/410B=Ab;运行后结果显示为:5/41/4为:耳* =0所以,原方程组的通解为:X=kl&+k2& + *。05.4非线性方程的解非线性方程的标准形式为f(x)=O函数fzero格式x二fzero (fun,xO)%用fun定义表达式f(x), xO为初始解。所以原方程组的通解为X=kl3/23/21+k2-3/47/40+00-8/15013/5C=rref(B)%求增广矩阵的行最简形,可得最简同解方程组。103/2

12、3/45/4013/2-7/4-1/400000对应齐次方程组的基础解系为:解法二:用iref求解b=14 0f;3/23/2 &= 10(-3/41非齐次方程组的特解xfval = fzero()%fval=f(x)x = fzero (fun,xO,options)xfval = fzero()%fval=f(x)xfval,exitflag = fzero() )x,fval,exitflag,output = fzero() )说明 该函数采用数值解求方程f(x)=0的根。例求x3 2x 5 = 0的根解:fun=,xA3-2*x-5,;z=fzero(fun,2)%初始估计值

13、为25.5非线性方程组的解非线性方程组的标准形式为:F(x) = 0其中:x为向量,F(x)为函数向量。函数fsolve格式x = fsolve(fun,xO)%用fun定义向量函数,其定义方式为:先定义方程函数function F = myfun (x)oF=表达式1;表达式2;表达式m%保存为myfun.m,并用下面方式调用:x = fsolve(myfun,xO), xO为初始估计值。x = fsolve(fun,xO,options)x,fval = fsolve(-) %fval=F(x),即函数值向量x,fval,exitflag = fsolve()x,fval,exitflag

14、,output = fsolve()xfval = fzero()%fval=f(x)例求下列方程组的根解:化为标准形式X +2X2=e=eX) )+2X2幺一巾=0设初值点为x0=-5 -5o先建立方程函数文件,并保存为myfun.m:function F = myfun(x)F = 2*x(l) - x(2) - exp(-x(1); x(l) + 2*x(2) - exp(-x(2);然后调用优化程序x0 = -5; -5;%初始点optionsptimsetCDisplayter1);% 显示输出信息xfval = fsol ve( myfun,xO?options)6.常微分方程求解

15、求微分方程的解析解:r = dsolve(eql,eq2, J ,condloiid2,Jv)r = dsolve(eqT,eq2,“ ,condlTcond2,)dsolve(feql,eq2r.fcondl9cond2VeJ9fvf)注意:在表达微分方程时,用字母D表示求微分,D2、D3等表示求高阶 微分。 任何D后所跟的字母为因变量, 自变量可以指定或由系统规则选定为确 省。例如,微分方程 冥=0应表达为:D2y=0 dxdxdsolve(*Dy=x*,*x,)d d1 1y ydydy例:求微分方程 乔+临+29y = o的特解.j(0) = 0,j-(0) = 15y=dsolve(

16、lD2y+4*Dy+29*y=0t/x1)y=dsoIve(tD2y+4*Dy+29*y=0t/y(0)=0,Dy(0)=15,/x,)微分方程数值解法:t,x=ode23(6xfunt0 tf,yO,tol)t,x=ode45(xfun, tO tf,yO,tol)其中:xfim为以待解方程或方程组写成的M函数to tf:自变量初值和终值yo:函数的初值tol:设置容许误差(相对误差和绝对误差)求解过程:options = odeset(RelTol,le 4,AbsTol,le 4 le-4 le-5);T,Y = ode45( rigid,0 12,0 1 1,options);plot

17、(T,YC,l), ,T,Y(:,2),T,Y(:,3),T)插值和拟合都是数据优化的一种方法,当实验数据不够多时经常需要用到这种方法来画图。在matlab中都有特定的函数来完成这些功能。这两种方法 的确别在于:当测量值是准确的,没有误差时,一般用插值;当测量值与真实值有误差时,一般用数据拟合。1.插值四、【据处理对于一维曲线的插值,一般用到的函数yi=interpl(X,Y,xi,method),其中method包括nearst, linear, spline, cubico命令1 inter pl功能 一维数据插值。该命令对数据点之间计算内插值。它找出一元函数f(x)在中间点的数值。其中函

18、数f(x)由所给数据决定。各个参量之间的关系如下图。图1数据点与插值点关系示意图格式yi = interp l(x,Y,xi)%返回插值向量yi,每一元素对应于参量xi,同时由向量x与Y的内插值 决定。yi = interp 1( Y,xi)%假定x=l:N,其中N为向量Y的长度,或者为矩阵Y的行数。yi = interp 1 (x,Y,xi,method)%用指定的算法计算插值:Nearest5:最近邻点插值,直接完成计算;Hmeai-:线性插值(缺省方式),直接完成计算;Spline9:三次样条函数插值;pchipS分段三次Herinite插值;cubic,:,:与?pchip9操作相同;

19、5v5cubic5:在MATLAB 5.0中的三次插值。对于超出x范围的xi的分量,使用方法earesf linear9v5cubic5的插 值算法,相应地将返回NaNo对其他的方法,interpl将对超出的分量执行外 插值算法。例x = 0:10; y = x.*sin(x);xx = 0:.25:10; yy = interpl(x,y,xx);plot(x,y,kd,xx,yy)例year = 1900:10:2010;product = 75.99591.972105.711123.203131.669150.697179.323 203.212 226.505 249.633 256

20、.344 267.893 ;pl995 = interpl(year,product,1995)x = 1900:1:2010;y = interpl(year,product,x/pchip*);plot(year,product,o,xj)对于二维曲面的插值,一般用到的函数zi=interp2(X,Y,Z,xi,yi,method),其 中method也和上面一样,常用的是cubico命令2 interp2功能二维数据内插值格式ZI = interp2(X,Y,Z,XI,YI)%返回矩阵ZI,其元素包含对应于参量XI与YI(可以是向量、或同型矩 阵)的元素,即Zi(iJ)*-Xi(iJ),

21、yi(iJ)oZI = interp2(Z,XI,YI)%缺省地,X=l:n. Y=l:m,其中m,n=size(Z)o再按第一种情形进行计算。ZI = interp2(Z,n)%作口次递归计算,在Z的每两个元素之间插入它们的二维插值,这样,Z的阶数将不断增加。inteqZ)等价于interp2(z,l)oZI = interp2(X,Y,Z,XI,YI,method) %用指定的算法method计算二维插值:5linear5:双线性插值算法(缺省算法);Nearest5:最临近插值;Spline5:三次样条插值;5cubic5:双三次插值。例X,Y = meshgrid(-3:.25:3);

22、Z = peaks(X,Y);%具有两个变量的采样函数,可产生一个凹凸有致的 曲面,包含了三个局部极大点及三个局部极小点XI,YI = meshgrid(-3:.125:3);ZZ = interp2(X,Y,Z,XI,YI);surf(X,Y,Z);hold on;surf(XI,YI,ZZ+15)axis(-3 3 3 3 5 20);hold off2.拟合对于一维曲线的拟合, 一般用到的函数p=polyfit(x,y,n)和yi=polyval(p,xi),这个是最常用的最小二乘法的拟合方法。例2004年C题time=0.25, 0.5 0.75,1 1.5 2 2.5 3 3.5 4

23、 4.5 5 6 7 8 9 10 11 12 13 14 15 16*; vol=3068 75 82 82 77 68 68 58 51 50 41 38 35 28 25 18 15 12 10 7 7 4*; plot(time,vol,*ojp=polyfit(time,vol,8)f=poly val(p,time); %求多项式的值table=time, vol, f, f-volhold onplot(time,f)hold off求最大值过程:s=polvder(p); %polyder:多项式求导roots(s)例原始数据x=l:l:12;y=l:l:5;z=0.2 0.2

24、4 0.25 0.26 0.25 0.25 0.25 0.26 0.26 0.29 0.25 0.29;0.27 0.31 0.3 0.3 0.26 0.28 0.29 0.26 0.26 0.26 0.26 0.29;0.41 0.41 0.37 0.37 0.38 0.35 0.34 0.35 0.35 0.34 0.35 0.35;0.41 0.42 0.42 0.41 0.4 0.39 0.39 0.38 0.36 0.36 0.36 0.36;0.3 0.36 0.4 0.43 0.45 0.45 0.51 0.42 0.4 0.37 0.37 0.37;X Y=meshgrid(x

25、,y);plot3(X,Y,z,*bo*);hold onZ是一个5乘12的矩阵。直接用原始数据画图如下:surf(x,y,z)title(fOriginal data Plot *);xlabel(X),ylabel(Y) zlabel(fZf) colormap ;colorbar;axis(0 15 0 6 0.15 0.55)Original data Plot先考虑插值,xl=l:0.2:12;yl=l:0.2:5;x2,y2=meshgrid(xl,yl);tll=interp2(x,y,z2,y2,fcubic);I.0.45- 0 4- 0.35U0.30.25需要用到的函数i

26、nterp2解决的线性规划问题的标准形式为:minf fr rx x“Rsub.to:A A xbxbAeqAeq x x = = begbeglbxublbxubtitle(*After Fit data Plot);xlabel(X),ylabel(Y),zlabel(Z),colormap; colorbar;axis(0 15 0 6 0.2 035);n0.50.45 -0.4 0.35U五、 优化问是1.线性规划线性规划问是目标函数和约束条件均为线性函数的问题,MATLAB6.0After Fit data PlotN其中f、x、b、beq、lb、ub为向量,A

27、、Aeq为矩阵。其它形式的线性规划问题都可经过适当变换化为此标准形式。在MATLAB6.0版中, 线性规划问题( (Linear Programming)已用函数linprog取代了MATLAB5.X版中的lp函数。由于版本的向下兼容性,一般说 来,低版本中的函数在6 0版中仍可使用。函数linprog格式x = linprog(f,A,b)%求血11 f * *x sub.toAxbAxb线性规划的最优解。x = linprog(f,A,beq,beq)%等式约束AeqAeq x x = = beqbeq,若没有不等式约束A A xbxb9 9则A= , b=。x = linprog(f,A

28、,bAeq,beq,lb,ub)%指定X的范围lbxublbx0表示函数收敛于解x, exitflag=O表示超过函数估值或迭代的最大数字,exitflag0表示函数不收敛于解x;若lambda=lower表示下界lb, lambda=upper表示上界ub, lambda=ineqlin表示不等式约束,lambda=eqlin表示等式约束,lambda中的非0元素表示对应的约束是有效约 束;output=iterations表示迭代次数,output=algorithm表示使用的运算规贝!J,output=cgiterations表示PCG迭代次数例5.1求下面的优化问题min-5XJ-4X

29、2-6X3x x x x2 2-|-x3 20 3x, + 2X2+ 4X3 42+ 2X2 30 OS* 结果如下:Optimization terminated*x=%最优解OeOOOO15.00003.0000fval =%最优值-78.0000exitflag =%函数收敛于解sub.to1output =iterations: 6algorithm: large-scale: interior point1cgiterations: 0message: Optimization terminatedlambda =ineqlin: 3x1 doubleeqlin: 0 x1 doub

30、leupper: 3x1 doublelower: 3x1 double例5.2一家家具公司生产桌子和椅子, 用于生产的全部劳动力共计450个工时,原料是400个单位的木材每张桌子使用15个工时的劳动力,20个单 位的木材,售价为80元.每张椅子使用10个工时,用材5个单位,售价45元问 为达到最大效益,应如何安排生产?建立如下模型:max 80 x + 45y20 x + 5y40015x + 10y 0 x0yo求解见ex502.m2.非线性规划问题2.1有约束的一元函数的最小值单变量函数求最小值的标准形式为min/(A)SUb.toA, x X X在MATLAB中使用fmin函数求其最小

31、值。函数fminbnd格式x = fminbnd(fun,xl,x2)%返回自变量x在区间x, A0,表示函数收敛于x,若exitflag=0,表示超过函 数估计值或迭代的最大数字,exitflag0表示函数不收敛于x;若参数output=iterations表示迭代次数,output=Funccoimt表示函数赋值次数,output=algorithm表示所使用的算法。例5 3计算函数.e)=“ + E + T在区间(,1) )内的最小值。解x,f、al,exitflag,output=fminbnd(xA3+cos(x)+x*log(x)/exp(x),0,1)简化x,fval=fminb

32、nd(xA3+cos(x)+x*log(x)/exp(x),0,l)2.2无约束多元函数最小值多元函数最小值的标准形式为minfix)fix)X X其中:X为向量,如尤=易,勺,,兀在MATLAB5.X中使用fmins求其最小值。命令一 利用函数fminsearch求无约束多元函数最小值函数fminsearch格式x = fminsearch(fun,xO) %x0为初始点,Fun为目标函数的表达式 字符串或MATLAB自定义函数的函数柄。x = fminsearch(fun,xO,options)% options查optimsetx,fval = fminsearch(-)% 最优点的函数

33、值x,fval,exitflag = fminsearch() )% exitflag与单变量情形一致x,fval,exitflag,output = Fminsearch() )%output与单变量情形一致例5.4求y = 2彳+4吠-10 xrv, +x x;的最小值点解X=fminsearch(,2*x(l)A3+4*x(l)*x(2)A3-10*x(l)*x(2)+x(2)A2, 0,0)结果为X =1.00160.8335命令二 利用函数fminunc求多变量无约束函数最小值函数fminunc格式x = fminunc(fun,xO)%返回给定初始点xO的最小函数值点x = fmi

34、nunc(fun,xO,options)% options为指定优化参数x,fval = fminunc(-) %fval最优点x处的函数值x,fval,exitflag = fminimc() )% exitflag为终止迭代的条件,与上同。x,fval,exitflag,output = fminunc(-)% output为输出优化信息x,fval,exitflag,output,grad = Fminunc() )% grad为函数在解x处的梯度值x,fval,exitflag,output,grad,hessian = fmimmc() ) % 目标函数在解x处 的海赛( (Hess

35、ian)值注意: 当函数的阶数大于2时, 使用fminunc比fminsearch更有效, 但当 所选函数高度不连续时,使用fminsearch效果较好。X= fminunc (,2*x(l)A3+4*x(l)*x(2)A3-10*x(l)*x(2)+x(2)A2, 0.5,0.5)2.3有约束的多元函数最小值非线性有约束的多元函数的标准形式为:mill f(x)Xsub.toC C (x)(x) 0CeqCeq(x) = 0AxbAxbAeqAeq x x = = bebe q qlbxublbxub满足lbxublbxub , ,若没有界,可设lb= , ub= ;nonIcon的作用是通

36、过接受的向量x来计算非 线性不等约束C(x)o和等式约束CM(X) = O分别在x x处的估计C和Ceq,通过 指定函数柄来使用,如:x = fmincon( my fun,xO, A ,b,Aeq,beq,lb,ub, my con),先建立非线性约束函数,并保存为mycon.m:function C,Ceq = mycon(x)%计算X处的非线性不等约束C(A-)0的函数值。Ceq=%计算x处的非线性等式约束Ceq(x)Ceq(x) = = O O的函数值。lambda是Lagrange乘子,它体现哪一个约束有效。output输出优化信息;grad表示目标函数在x处的梯度;hessian表

37、示目标函数在x处的Hessiab值。例5 5求下面问题在初始点x=(10,10,10)处的最优解。Minf f (x)(x) = = x xA Ax x2 2x x3 3Sub.to0 S E +2X2+2X3 72解:约束条件的标准形式为sub.to-x,-2X2-2X30X + 2 x2+ 2 x3 72fun= x(l)*x(2)*x(3);x0=10,10,10;A=-l -2 -2;1 2 2;b=0;72;x,fval=fmincon(fun,xO,A,b)2.4二次规划问题二次规划问题( (quadratic programming)的标准形式为:minf ff fx xSUb.

38、tOAxbAxbAeqAeq x x = = beqbeq lbxublbxub其中,H、A、Aeq为矩阵,f、b、beq、lb、ub、x为向量。其它形式的二次 规划问题都可转化为标准形式o MATLAB5.X版中的qp函数已被6.0版中的函 数quadprog取代。函数quadprog格式x = quadprog(H,f,A,b)%其中H,f,A,b为标准形中的参数,x为目标函数的最小值。x = quadprog(H,f,A,b,Aeq,beq)%Aeq,beq满足等约束条件 Zx = bcq。x = quadprog(H,f,A,b,Aeq,beq,lb,ub) % lb,ub分别为解x

39、x的下界与上界。x = quadprog(H,f,A,b,Aeq,beq,lb,ub,xO) %x0为设置的初值x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options)% options为指定的优化参数x,fval = quadprog(-)%fval为目标函数最优值x,fval,exitflag = quadprog() )% exitflag与线性规划中参数意义相同x,fval,exitflag,output = quadprog(-) % output与线性规划中参数意 义相同x9fval9exitflag,output Jambda = quadpr

40、og(*)% lambda与线性规划中参数意义相同例5 6求解下面二次规划问题min/ (x) =X X22X Xl lX X2 2 2召6X2厶sub.tox x +x+x2 222x(+ 2X2 2 22x2x +X2300 x2解:f(x)=-xf(x)=-x H H x-fxx-fx厶在MATLAB中实现如下:见ex506.m结果为:x =%最优解0.66671.3333fval =%最优值-8.2222exitflag =% 收敛1output =iterations: 3algorithm: medium-scale: active-set*firstorderopt:cgiter

41、ations:lambda =lower: 2x1 double upper: 2x1 doubleeqlin: 0 x1 doubleineqlin: 3x1 doublelambda.ineqlinans =3.11110.44440lambda.lowerans =00说明 第1、2个约束条件有效,其余无效。2.5多目标规划多目标规划是指在一组约束下, 对多个不同目标函数进行优化。 它的一般 形式为min /|(x),/2(x), ,/”)sub.tog,x)S j =其中:在同一约束下,当目标函数处于冲突状态时,不存在最优解X使所有目标函数同时达到最优。此时,我们使用有效解,即如果不存

42、在XG5,使得 则称x*为有效解。在MATLAB中,多目标问题的标准形式为minimiz,eimiz,e7Sllb.toF(x) weightweight 7 goalgoalC(x)0CeqCeq (x)(x)= 0AxbAxbAeqAeq x x = = beqbeqlbxuhlbxuh其中:x、b、beq、lb、ub是向量;A、Aeq为矩阵;C(x)、Ceq(x)和F(x)是返 回向量的函数;F(x)、C(x)、Ceq(x)可以是非线性函数;weight为权值系数向 量,用于控制对应的目标函数与用户定义的目标函数值的接近程度;goal为用 户设计的与目标函数相应的目标函数值向量;丁为一个

43、松弛因子标量;F(x)为 多目标规划中的目标函数向量。函数fgoaiattain格式x = fgoalattain(fun,xO,goal,weight)x = fgoalattain(fun,x05goal,weight,A,b)x = fgoalattain(fun,xO,goal,weight,A,b,Aeq,beq)x = fgoalattain(fun,xO,goal,weightA,b,Aeq,beq,lb,ub)x = fgoalattain(fun,xO,goal,weight,A,b,Aeq,beq,lb,ub,nonIcon)x = fgoalattain(fun,xO,g

44、oal,weight,A,b,Aeq,beq,lb,ub,nonIcon,options)x/val = fgoaiattain()xfvalattainfactor = fgoaiattain()x,fval,attainfactor,exitflag = fgoaiattain()x,fval?attainfactor,exitflag,output = fgoalattain()x9fval9attainfactor9exitflag9output9lambda = fgoalattain() )参数说明:xO为初始解向量;ftm为多目标函数的文件名字符串,其定义方式与前ftm的定义方式

45、相同;goal为用户设计的目标函数值向量;weight权值系数向量,用于控制目标函数与用户自定义目标值的接近程度;A、b满足线性不等式约束A-A- beq满足线性等式约束AeqAeq x x = = beqbeq,没有时取Aeq= , beq=;lb、ub为变量的下界和上界:=nonIcon的作用是通过接受的向量x来计算非线性不等约束CW0和等式 约束3(龙)=0分别在x处的值C和Ceq,通过指定函数柄来使用。如:x = fgoalattain(myfun,xO,goal,weight,A,b,Aeq,beq,lb,ub,mycon),先建立非线性约束函数,并保存为mycon.m:functi

46、on C,Ceq = mycon(x)C= -%计算x处的非线性不等式约束CW0的函数值。Ceq =%计算X处的非线性等式约束CeqCeq(x) 0的函数值。options为指定的优化参数;fval为多目标函数在x处的值;attainfactor为解x处的目标规划因子;exitflag为终止迭代的条件;output为输出的优化信息;lambda为解x处的Lagrange乘子六、简单的图像操作命令imread:从图像文件中读入图像数据;imwrite:将图像写入图像文件;imshow:显示文件X :将工作空间中的变量X保存到磁盘上,后缀mat;load文件名:从磁盘文件中重新装入变量内容到内存空

47、间;edge:灰度图像边缘检测edge(I, method) method:1sobel 1prewitt 1roberts 1log *zerocrossimnoise:给图像加噪声imnoise(I, type)imnoise:vgaussiansalt&pepper speckled1medfilt2:二维中值滤波七.外部数据读取1.纯数据文件(没有字母和中文,纯数字)对于这种txt文档,从matalb中读取就简单多了。例如testl.txt文件,内容为:2009 2010 20112012save文件名2001 2002 200320042005 2006 20072008方法

48、一:可以在command window中输入load testl.txt,然后就会产生一个testl的数据文件(内存变量名和文件名一样),内容跟testl. txt中的数据一样;方法二:是在file/import data./next/finish也可产生一个叫testl的数据文件。方法三:使用textread (文件名)读取2 中英文和数据如test2.txt假定名为test2.txt的文件中以下为文件内容你好,我的数据欢迎来到百思论坛1 11 111 11112 22 222 22223 33 333 33334 44 444 44445 55 555 5555这样的文件怎么读入数据呢?方

49、法有多种,现举两个比较简单实用的。方法一:在文件菜单中选择file/import data,按照提示进行操作至结束。在command窗口中输入 whosdata5x4160 double arraytextdata 4x1300 cell arrayGrand total is 54 elements using 460 bytes datadata =11111111112222222222333333333344444444445555555555textdatatextdata =,你好,我的数据,欢迎来到,百思论坛,* www.baisi.nef方法二:al,a2,a3,a4=textread(,text2.txt,/%s%s%s%s,headerlines1,4)NameSizeBytes Class说明: s可以是其他形式, 跟读入的数据类型有关, 比

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论