matlab学习心得(共11篇)由网友“耍酷的猫”投稿提供,下面小编给大家整理过的matlab学习心得,供大家阅读参考。
篇1: matlab学习心得
这是我在学习的过程中的`一些技巧,或许对你有帮助,可能字数不你能满足你的要求,但是绝对是精华。
1,如果你要是不是计算机转业的,只是为了方便自己的工作或学习,那么你没有必要把matlab教程全部学会,只需要学你需要的那部分即可,比如,绘图,矩阵运算,等等,根据你个人的需要而定,但是基本命令、数据类型、基本的程序结构(条件语句,循环语句,嵌套)、文件的io是必须看的,因为任何一个程序都需要这几个基本的块。
2,你最好找一个熟悉编程的人来辅助你的学习,这就包括很多编程的技巧问题,程序的结构设计问题,对于程序的运行效率非常有帮助。有的时候,你编出来的程序,能够运行,但是耗时太长,也就是说你的程序没有错,但是不适合实际。或者说,对于规模小的问题能够解决,但是规模大一点的问题就需要很长很长的时间,这就需要对程序的结构和算法问题进行改进(亲身体会,编完一个程序,小的例子可以运行出结果,但是大例子需要很长时间,所以必须要改进一下)。
3,你需要找一本matlab的函数工具词典,就像汉语词典一样,你要尽量多的熟悉matlab自带的函数,及其作用,因为matlab的自带函数特别多,基本上能够满足一般的数据和矩阵的计算,所以基本上不用你自己编函数(如vb中,大部分的函数都需要自己编)。这一点对你的程序非常有帮助,可以使你的程序简单,运行效率高,可以节省很多时间(亲身体会)。切记!!!
4,你把基本的知识看过之后,就需要找一个实际的程序来动手编一下,不要等所有的知识都学好之后再去编程,你要在编程的过程中学习,程序需要什么知识再去补充(这一条是别人教我的,很管用),编程是一点一点积累的,所以你要需做一些随手笔记什么的。
5,编程问题最头疼的不是编程序,而是调程序,所以在你的程序编完之后,一定要进行验证其正确性,你要尽量多的设想你的问题的复杂性,当然,要一步一步复杂,这样才能保证你的程序的适用性很强。
随笔写了这么多,可能不全,希望对你有帮助!!
篇2:MATLAB实验报告
MATLAB实验报告模板
[摘要]大学物理力学中涉及许多复杂的数值计算问题,例如非线性问题,对其手工求解较为复杂,而MATLAB语言正是处理非线性问题的很好工具,既能进行数值求解,又能绘制有关曲线,非常方便实用。另外,利用其可减少工作量,节约时间,加深理解,同样可以培养应用能力 。
[关键词]力学 重力场 阻尼振动 MATLAB语言 图形绘制
一、问题的提出
MATLAB 语言是当今国际上科学界 (尤其是自动控制领域) 最具影响力、也是最有活力的软件。它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、便捷的与其他程序和语言接口的.功能。MATLAB 语言在各国高校与研究单位起着重大的作用.它是一种集数值计算、符号运算、可视化建模、仿真和图形处理等多种功能……
二、重力场中小球落点问题
在物理课程的学习中我们可以明确的得到解决落体运动的方程:
d2ym2??mg(1) dt
例:一弹性球,初始高度 h=10m,向上初速度 v0=15m/s, 与地相碰的速度衰减系数 k=0.8,计算任意时刻球的速度和位置。
分析:用传统计算方法解决时我们需要列出传统方程,
我们明显可以感觉到,这样的计算不仅繁琐费时,而且没有图示很难给以直观的感受,现在我们用MATLAB语言来对此例题做以下解析:
MATLAB程序如下:
clear all %有衰减弹性小球运动程序
v0=15; h=10; %初速度、高度
g=-9.8; k=0.8; % 重力加速度 衰减系数
通过以上程序对小球落地速度、位置以及运动过程的坐标描述,我们就会发现其在此
类问题中直观的表述,那么现在我们来解决另外一个问题。
三、解决阻尼振动与受迫震动图像问题
1、阻尼振动方程
红线—简谐振动,蓝线?2??2的阻尼振动,绿线?2??02的阻尼振动,阻尼振动周期
比自由振动要长,当?2?0.99?02 时,振幅按指数迅速缩减。
四、结论
从以上利用MATLAB语言对3种基本力学模型的分析我们不难的出以下结论:
五、课程体会
经过一学期紧张而有序的课程学习,在忙碌之余也得到了颇多的收获。我深深体会到MATLAB语言相对于同类程序语言更方便更简洁易懂,……
[参考文献]
[1] 刘卫国.MATLAB程序设计与应用(第二版)[M].北京:高等教育出版社,.
[2] 马文蔚.物理学(上册)(第四版)[M],北京:高等教育出版社,.
说明:
1.页面为A4,页边距上下均为2.5厘米,左右均为2.2厘米。
2.行距为单倍行距。
3.页码不显示首页。
4.注意参考文献的格式。
篇3:matlab线性规划
matlab线性规划
MATLAB 优化问题
1 线性规划问题
线性规划问题是目标函数和约束条件均为线性函数的问题,MATLAB6.0解决的线性规划问题的标准形式为:
min f(x)x?R
sub.to:A?x?b
Aeq?x?beq
lb?x?ub n
其中f、x、b、beq、lb、ub为向量,A、Aeq为矩阵。
其它形式的线性规划问题都可经过适当变换化为此标准形式。
在MATLAB6.0版中,线性规划问题(Linear Programming)已用函数linprog取代了函数 linprog
格式 x = linprog(f,A,b) %求min f ' *x sub.to A?x?b线性规划的最优解。
x = linprog(f,A,b,Aeq,beq) %等式约束Aeq?x?beq,若没有不等式约束
A?x?b,则A=[ ],b=[ ]。
x = linprog(f,A,b,Aeq,beq,lb,ub) %指定x的范围lb?x?ub,若没有等式约束
Aeq?x?beq ,则Aeq=[ ],beq=[ ]
x = linprog(f,A,b,Aeq,beq,lb,ub,x0) %设置初值x0
x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options) % options为指定的优化参数
[x,fval] = linprog(?) % 返回目标函数最优值,即fval= f ' *x。
[x,lambda,exitflag] = linprog(?) % lambda为解x的Lagrange乘子。
[x, lambda,fval,exitflag] = linprog(?) % exitflag为终止迭代的错误条件。
[x,fval, lambda,exitflag,output] = linprog(?) % output为关于优化的一些信息
说明 若exitflag>0表示函数收敛于解x,exitflag=0表示超过函数估值或迭代的最大数字,exitflag
例5-1 求下面的优化问题
min ?5x1?4x2?6x3
sub.to x1?x2?x3?20
3x1?2x2?4x3?42
3x1?2x2?30
.
0?x1,0?x2,0?x3
解:
>>f = [-5; -4; -6];
>>A = [1 -1 1;3 2 4;3 2 0];
>>b = [20; 42; 30];
>>lb = zeros(3,1);
>>[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb)
结果为:
x = %最优解
0.0000
15.0000
3.0000
fval = %最优值
-78.0000
exitflag = %收敛
1
output =
iterations: 6 %迭代次数
cgiterations: 0
algorithm: 'lipsol' %所使用规则
lambda =
ineqlin: [3x1 double]
eqlin: [0x1 double]
upper: [3x1 double]
lower: [3x1 double]
>>lambda.ineqlin
ans =
0.0000
1.5000
0.5000
>>lambda.lower
ans =
1.0000
0.0000
0.0000
表明:不等约束条件2和3以及第1个下界是有效的
2 非线性规划问题
2.1 有约束的一元函数的最小值
单变量函数求最小值的标准形式为minf(x) sub.to x1?x?x2 x
在MATLAB中使用fmin函数求其最小值。
函数 fminbnd
格式 x = fminbnd(fun,x1,x2) %返回自变量x在区间x1?x?x2上函数fun取最小值
时x值,fun为目标函数的表达式字符串或MATLAB
自定义函数的函数柄。
x = fminbnd(fun,x1,x2,options) % options为指定优化参数选项
[x,fval] = fminbnd(?) % fval为目标函数的最小值
[x,fval,exitflag] = fminbnd(?) %xitflag为终止迭代的条件
[x,fval,exitflag,output] = fminbnd(?) % output为优化信息
说明 若参数exitflag>0,表示函数收敛于x,若exitflag=0,表示超过函数估计值或迭代的最大数字,exitflag
例5-2 计算下面函数在区间(0,1)内的最小值。
x3?cosx?xlogx f(x)?e解:>>[x,fval,exitflag,output]=fminbnd('(x^3+cos(x)+x*log(x))/exp(x)',0,1)
x =
0.5223
fval =
0.3974
exitflag =
1
output =
iterations: 9
funcCount: 9
algorithm: 'golden section search, parabolic interpolation'
例5-3 在[0,5]上求下面函数的最小值f(x)?(x?3)3?1
解:先自定义函数:在MATLAB编辑器中建立M文件为:
function f = myfun(x)
f = (x-3).^2 - 1;
保存为myfun.m,然后在命令窗口键入命令:
>>x=fminbnd(@myfun,0,5)
则结果显示为:
x =
3
2.2 无约束多元函数最小值
多元函数最小值的标准形式为minf(x) x
其中:x为向量,如x?[x1,x2,?,xn]
在MATLAB中使用fmins求其最小值。
命令 利用函数fminsearch求无约束多元函数最小值
函数 fminsearch
格式 x = fminsearch(fun,x0) %x0为初始点,fun为目标函数的表达式字符串或
MATLAB自定义函数的函数柄。
x = fminsearch(fun,x0,options) % options查optimset
.
[x,fval] = fminsearch(?) %最优点的函数值
[x,fval,exitflag] = fminsearch(?) % exitflag与单变量情形一致
[x,fval,exitflag,output] = fminsearch(?) %output与单变量情形一致
注意:fminsearch采用了Nelder-Mead型简单搜寻法。
32例5-4 求y?2x1?4x1x32?10x1x2?x2的最小值点
解:>>X=fminsearch('2*x(1)^3+4*x(1)*x(2)^3-10*x(1)*x(2)+x(2)^2', [0,0])
结果为
X =
1.0016 0.8335
或在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])
结果为:
X =
1.0016 0.8335
命令 利用函数fminunc求多变量无约束函数最小值
函数 fminunc
格式 x = fminunc(fun,x0) %返回给定初始点x0的最小函数值点
x = fminunc(fun,x0,options) % options为指定优化参数
[x,fval] = fminunc(?) %fval最优点x处的函数值
[x,fval,exitflag] = fminunc(?) % exitflag为终止迭代的条件,与上同。
[x,fval,exitflag,output] = fminunc(?) %output为输出优化信息
[x,fval,exitflag,output,grad] = fminunc(?) % grad为函数在解x处的梯度值
[x,fval,exitflag,output,grad,hessian] = fminunc(?) %目标函数在解x处的海赛
(Hessian)值
注意:当函数的阶数大于2时,使用fminunc比fminsearch更有效,但当所选函数高度不连续时,使用fminsearch效果较好。
2?2x1x2?x2例5-5 求f(x)?3x12的最小值。
>>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)
结果为:
x =
1.0e-008 *
-0.7591 0.2665
fval =
1.3953e-016
exitflag =
1
output =
iterations: 3
funcCount: 16
stepsize: 1.2353
firstorderopt: 1.6772e-007
algorithm: 'medium-scale: Quasi-Newton line search'
grad =
1.0e-006 *
-0.1677
0.0114
hessian =
6.0000 2.0000
2.0000 2.0000
或用下面方法:
>>fun=inline('3*x(1)^2+2*x(1)*x(2)+x(2)^2')
fun =
Inline function:
fun(x) = 3*x(1)^2+2*x(1)*x(2)+x(2)^2
>>x0=[1 1];
>>x=fminunc(fun,x0)
x =
1.0e-008 *
-0.7591 0.2665
2.3 有约束的多元函数最小值
非线性有约束的多元函数的标准形式为:
minf(x) x
sub.to C(x)?0
Ceq(x)?0
A?x?b
Aeq?x?beq
lb?x?ub
其中:x、b、beq、lb、ub是向量,A、Aeq为矩阵,C(x)、Ceq(x)是返回向量的函数,f(x)为目标函数,f(x)、C(x)、Ceq(x)可以是非线性函数。
在MATLAB5.x中,它的求解由函数constr实现。
函数 fmincon
格式 x = fmincon(fun,x0,A,b)
x = fmincon(fun,x0,A,b,Aeq,beq)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
[x,fval] = fmincon(?)
[x,fval,exitflag] = fmincon(?)
[x,fval,exitflag,output] = fmincon(?)
[x,fval,exitflag,output,lambda] = fmincon(?)
.
[x,fval,exitflag,output,lambda,grad] = fmincon(?)
[x,fval,exitflag,output,lambda,grad,hessian] = fmincon(?)
参数说明:fun为目标函数,它可用前面的方法定义;
x0为初始值;
A、b满足线性不等式约束A?x?b,若没有不等式约束,则取A=[ ],b=[ ];
Aeq、beq满足等式约束Aeq?x?beq,若没有,则取Aeq=[ ],beq=[ ];
lb、ub满足lb?x?ub,若没有界,可设lb=[ ],ub=[ ];
nonlcon的作用是通过接受的向量x来计算非线性不等约束C(x)?0和等式
约束Ceq(x)?0分别在x处的估计C和Ceq,通过指定函数柄来使用,
如:>>x = fmincon(@myfun,x0,A,b,Aeq,beq,lb,ub,@mycon),先建立非
线性约束函数,并保存为mycon.m:function [C,Ceq] = mycon(x)
C = ? % 计算x处的非线性不等约束C(x)?0的函数值。
Ceq = ? % 计算x处的非线性等式约束Ceq(x)?0的函数值。
lambda是Lagrange乘子,它体现哪一个约束有效。
output输出优化信息;
grad表示目标函数在x处的梯度;
hessian表示目标函数在x处的Hessiab值。
例5-6 求下面问题在初始点(0,1)处的最优解
2min x1?x22?x1x2?2x1?5x2
sub.to ?(x1?1)2?x2?0
2x1?3x2?6?0
解:约束条件的标准形式为
sub.to (x1?1)2?x2?0
?2x1?3x2?6
先在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)
则结果为
x =
3 4
fval =
-13
exitflag = %解收敛
1
output =
iterations: 2
funcCount: 9
stepsize: 1
algorithm: 'medium-scale: SQP, Quasi-Newton, line-search'
firstorderopt: [ ]
cgiterations: [ ]
lambda =
lower: [2x1 double] %x下界有效情况,通过lambda.lower可查看。
upper: [2x1 double] %x上界有效情况,为0表示约束无效。
eqlin: [0x1 double] %线性等式约束有效情况,不为0表示约束有效。
eqnonlin: [0x1 double] %非线性等式约束有效情况。
ineqlin: 2.5081e-008 %线性不等式约束有效情况。
ineqnonlin: 6.1938e-008 %非线性不等式约束有效情况。
grad = %目标函数在最小值点的梯度
1.0e-006 *
-0.1776
hessian = %目标函数在最小值点的Hessian值
1.0000 -0.0000
-0.0000 1.0000
例5-7 求下面问题在初始点x=(10, 10, 10)处的最优解。
Min f(x)??x1x2x3
Sub.to 0?x1?2x2?2x3?72
解:约束条件的标准形式为
sub.to ?x1?2x2?2x3?0 x1?2x2?2x3?72
>>fun= '-x(1)*x(2)*x(3)';
>>x0=[10,10,10];
>>A=[-1 -2 -2;1 2 2];
>>b=[0;72];
>>[x,fval]=fmincon(fun,x0,A,b)
结果为:
x =
24.0000 12.0000 12.0000
fval =
-3456
2.4 二次规划问题
二次规划问题(quadratic programming)的标准形式为:
minx?Hx?f?x sub.to A?x?b
?x?beq Aeq
lb?x?ub
其中,H、A、Aeq为矩阵,f、b、beq、lb、ub、x为向量
.
其它形式的二次规划问题都可转化为标准形式。
MATLAB中二次规划应用函数quadprog。
函数 quadprog
格式 x = quadprog(H,f,A,b) %其中H,f,A,b为标准形中的参数,x为目标函数的最小
值。
x = quadprog(H,f,A,b,Aeq,beq) %Aeq,beq满足等约束条件Aeq?x?beq。
x = quadprog(H,f,A,b,Aeq,beq,lb,ub) % lb,ub分别为解x的下界与上界。
x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0) %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与线性规划中参数意义相同
[x,fval,exitflag,output,lambda] = quadprog(?) % lambda与线性规划中参数意义
相同 例5-8 求解下面二次规划问题
min
sub.to 2f(x)?x1?x22?x1x2?2x1?6x2 x1?x2?2
?x1?2x2?2
2x1?x2?3
0?x1,0?x2
解:f(x)?x?Hx?f?x ?1?1??x1???2?f?x?则H??,,???6??x? ?12???2???
在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)
结果为:
x = %最优解
0.6667
1.3333
fval = %最优值
-8.2222
exitflag = %收敛
1
output =
iterations: 3
algorithm: 'medium-scale: active-set'
firstorderopt: [ ]
cgiterations: [ ]
lambda =
lower: [2x1 double]
upper: [2x1 double]
eqlin: [0x1 double]
ineqlin: [3x1 double]
>>lambda.ineqlin
ans =
3.1111
0.4444
>>lambda.lower
ans =
说明 第1、2个约束条件有效,其余无效。
例5-9 求二次规划的最优解
max f (x1, x2)=x1x2+3
sub.to x1+x2-2=0
解:化成标准形式:
?0?1??x1??x1?minf(x1x2)??x1x2?3?(x1x2)?????(0,0)???3 ??10??x2??x2?
sub.to x1+x2=2
在Matlab中实现如下:
>>H=[0,-1;-1,0];
>>f=[0;0];
>>Aeq=[1 1];
>>b=2;
>>[x,fval,exitflag,output,lambda] = quadprog(H,f,[ ],[ ],Aeq,b)
结果为:
x =
1.0000
1.0000
fval =
-1.0000
exitflag =
1
output =
firstorderopt: 0
iterations: 1
cgiterations: 1
algorithm: [1x58 char]
lambda =
eqlin: 1.0000
ineqlin: [ ]
lower: [ ]
upper: [ ]
.
3 “半无限”有约束的多元函数最优解
“半无限”有约束多元函数最优解问题的标准形式为
minxf(x)
sub.to C(x)?0
Ceq(x)?0
A?x?b
Aeq?x?beq
K1(x,w1)?0
K2(x,w2)?0
?
Kn(x,wn)?0
其中:x、b、beq、lb、ub都是向量;A、Aeq是矩阵;C(x)、Ceq(x)、Ki(x,wi)是返回向量的函数,f(x)为目标函数;f(x)、C(x)、Ceq(x)是非线性函数;Ki(x,wi)为半无限约束,w1,w2,?,wn通常是长度为2的向量。
在MTALAB5.x中,使用函数seminf解决这类问题。
函数 fseminf
格式 x = fseminf(fun,x0,ntheta,seminfcon)
x = fseminf(fun,x0,ntheta,seminfcon,A,b)
x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq)
x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub)
x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub,options)
[x,fval] = fseminf(?)
[x,fval,exitflag] = fseminf(?)
[x,fval,exitflag,output] = fseminf(?)
[x,fval,exitflag,output,lambda] = fseminf(?)
参数说明:x0为初始估计值;
fun为目标函数,其定义方式与前面相同;
A、b由线性不等式约束A?x?b确定,没有,则A=[ ],b=[ ];
Aeq、beq由线性等式约束Aeq?x?beq确定,没有,则Aeq=[ ],beq=[ ]; Lb、ub由变量x的范围lb?x?ub确定;
options为优化参数;
ntheta为半无限约束的个数;
seminfcon用来确定非线性约束向量C和Ceq以及半无限约束的向量K1,
K2,?,Kn,通过指定函数柄来使用,如:
x = fseminf(@myfun,x0,ntheta,@myinfcon)
先建立非线性约束和半无限约束函数文件,并保存为myinfcon.m:
function [C,Ceq,K1,K2,?,Kntheta,S] = myinfcon(x,S)
%S为向量w的采样值
% 初始化样本间距
if isnan(S(1,1)),
S = ? % S 有ntheta行2列
end
w1 = ? %计算样本集
w2 = ? %计算样本集
?
wntheta = ? % 计算样本集
K1 = ? % 在x和w处的第1个半无限约束值
K2 = ? %在x和w处的第2个半无限约束值
?
Kntheta = ? %在x和w处的第ntheta个半无限约束值
C = ? % 在x处计算非线性不等式约束值
Ceq = ? % 在x处计算非线性等式约束值
如果没有约束,则相应的值取为“[ ]”,如Ceq=[]
fval为在x处的目标函数最小值;
exitflag为终止迭代的条件;
output为输出的优化信息;
lambda为解x的Lagrange乘子。
例5-10 求下面一维情形的最优化问题
minxf(x)?(x1?0.5)2?(x2?0.5)2?(x3?0.5)2
sub.to
K1(x,w1)?sin(w1x1)cos(w1x2)?(w1?50)2?sin(w1x3)?x3?1 K2(x,w2)?sin(w2x2)cos(w2x1)?(w2?50)2?sin(w2x3)?x3?1 1?w1?100
1?w2?100
解:将约束方程化为标准形式:
K1(x,w1)?sin(w1x1)cos(w1x2)?(w1?50)2?sin(w1x3)?x3?1?0 K2(x,w2)?sin(w2x2)cos(w2x1)?(w2?50)2?sin(w2x3)?x3?1?0 先建立非线性约束和半无限约束函数文件,并保存为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)
结果为:
x =
0.6673
0.3013
0.4023
fval =
0.0770
>>[C,Ceq,K1,K2] = mycon (x,NaN); % 利用初始样本间距
>>max(K1)
ans =
-0.0017
>>max(K2)
ans =
-0.0845
图5-1
例5-11 求下面二维情形的最优化问题
minxf(x)?(x1?0.2)2?(x2?0.2)2?(x3?0.2)2
sub.to
K1(x,w)?sin(w1x1)cos(w2x2)?(w1?50)2?sin(w1x3)?x3??
sin(w2x2)cos(w1x1)?(w2?50)2?sin(w2x3)?x3?1.5 1?w1?100
1?w2?100
初始点为x0=[0.25, 0.25, 0.25]。
解:先建立非线性和半无限约束函数文件,并保存为mycon.m:
function [C,Ceq,K1,S] = mycon(X,S)
% 初始化样本间距:
if isnan(s(1,1)),
s = [2 2];
end
% 设置样本集
w1x = 1:s(1,1):100;
w1y = 1:s(1,2):100;
[wx, wy] = meshgrid(w1x,w1y);
% 计算半无限约束函数值
K1 = sin(wx*X(1)).*cos(wx*X(2))-1/1000*(wx-50).^2 -sin(wx*X(3))-X(3)+…
sin(wy*X(2)).*cos(wx*X(1))-1/1000*(wy-50).^2-sin(wy*X(3))-X(3)-1.5;
% 无非线性约束
C = [ ]; Ceq=[ ];
%作约束曲面图形
m = surf(wx,wy,K1,'edgecolor','none','facecolor','interp');
camlight headlight
title('Semi-infinite constraint')
drawnow
然后在MATLAB命令窗口下键入命令:
>>fun = 'sum((x-0.2).^2)';
>>x0 = [0.25, 0.25, 0.25];
>>[x,fval] = fseminf(fun,x0,1,@mycon)
结果为(如图)
x =
0.2926 0.1874 0.2202
fval =
0.0091
>>[c,ceq,K1] = mycon(x,[0.5,0.5]); % 样本间距为0.5
>>max(max(K1))
ans =
-0.0027 图5-2
4 极小化极大(Minmax)问题
极小化极大问题的标准形式为
minmaxx{Fi}{Fi(x)}
sub.to C(x)?0
Ceq(x)?0
A?x?b
.
Aeq?x?beq
lb?x?ub
其中:x、b、beq、lb、ub是向量,A、Aeq为矩阵,C(x)、Ceq(x)和F(x)是返回向量的函数,F(x)、C(x)、Ceq(x)可以是非线性函数。
在MATLAB5.x中,它的求解由函数minmax实现。
函数 fminimax
格式 x = fminimax(fun,x0)
x = fminimax(fun,x0,A,b)
x = fminimax(fun,x0,A,b,Aeq,beq)
x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub)
x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
[x,fval,maxfval] = fminimax(?)
[x,fval,maxfval,exitflag] = fminimax(?)
[x,fval,maxfval,exitflag,output] = fminimax(?)
[x,fval,maxfval,exitflag,output,lambda] = fminimax(?)
参数说明:fun为目标函数;
x0为初始值;
A、b满足线性不等约束A?x?b,若没有不等约束,则取A=[ ],b=[ ];
Aeq、beq满足等式约束Aeq?x?beq,若没有,则取Aeq=[ ],beq=[ ];
lb、ub满足lb?x?ub,若没有界,可设lb=[ ],ub=[ ];
nonlcon的作用是通过接受的向量x来计算非线性不等约束C(x)?0和等式约束
Ceq(x)?0分别在x处的值C和Ceq,通过指定函数柄来使用,如:>>x =
fminimax(@myfun,x0,A,b,Aeq,beq,lb,ub,@mycon),先建立非线性约束函数,
并保存为mycon.m:function [C,Ceq] = mycon(x)
C = ? % 计算x处的非线性不等约束C(x)?0的函数值。
Ceq = ? % 计算x处的非线性等式约束Ceq(x)?0的函数值。
options为指定的优化参数;
fval为最优点处的目标函数值;
maxfval为目标函数在x处的最大值;
exitflag为终止迭代的条件;
lambda是Lagrange乘子,它体现哪一个约束有效。
output输出优化信息。
例5-12 求下列函数最大值的最小化问题
[f1(x), f2(x), f3(x), f4(x), f5(x)]
2?x2其中:f1(x)?2x12?48x1?40x2?304
2f2(x)??x22?3x2
f3(x)?x1?3x2?18
f4(x)??x1?x2
f5(x)?x1?x2?8
解:先建立目标函数文件,并保存为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)
结果为:
x =
4.0000
4.0000
fval =
0.0000 -64.0000 -2.0000 -8.0000 -0.0000
例5-13 求上述问题的绝对值的最大值最小化问题。
目标函数为:[|f1(x)|, |f2(x)|, |f3(x)|, |f4(x)|, |f5(x)|]
解:先建立目标函数文件(与上例相同)
然后,在命令窗口或编辑器中建立M文件:
>>x0 = [0.1; 0.1]; % 初始点
>>options = optimset('MinAbsMax',5); % 指定绝对值的最小化
>>[x,fval] = fminimax(@myfun,x0,[ ],[ ],[ ],[ ],[ ],[ ],[ ],options)
则结果为
x =
4.9256
2.0796
fval =
37.2356 -37.2356 -6.8357 -7.0052 -0.9948
5 多目标规划问题
多目标规划是指在一组约束下,对多个不同目标函数进行优化。它的一般形式为
min[f1(x),f2(x),?,fm(x)]
j?1,2,?,p sub.to gj(x)?0
其中:x?(x1,x2,?,xn)。
在同一约束下,当目标函数处于冲突状态时,不存在最优解x使所有目标函数同时达到最优。此时,我们使用有效解,即如果不存在x?S,使得fi(x)?fi(x*),i=1,2,?m, 则称x*为有效解。
在MATLAB中,多目标问题的标准形式为
.
minimize? x,?
sub.to F(x)?weight???goal
C(x)?0
Ceq(x)?0
A?x?b
Aeq?x?beq
lb?x?ub
其中:x、b、beq、lb、ub是向量;A、Aeq为矩阵;C(x)、Ceq(x)和F(x)是返回向量的函数;F(x)、C(x)、Ceq(x)可以是非线性函数;weight为权值系数向量,用于控制对应的目标函数与用户定义的目标函数值的接近程度;goal为用户设计的与目标函数相应的目标函数值向量;?为一个松弛因子标量;F(x)为多目标规划中的目标函数向量。
在MATLAB5.x中,它的最优解由attgoal函数实现。
函数 fgoalattain
格式 x = fgoalattain(fun,x0,goal,weight)
x = fgoalattain(fun,x0,goal,weight,A,b)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,options)
[x,fval] = fgoalattain(?)
[x,fval,attainfactor] = fgoalattain(?)
[x,fval,attainfactor,exitflag] = fgoalattain(?)
[x,fval,attainfactor,exitflag,output] = fgoalattain(?)
[x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(?)
参数说明:
x0为初始解向量;
fun为多目标函数的文件名字符串,其定义方式与前面fun的定义方式相同;
goal为用户设计的目标函数值向量;
weight为权值系数向量,用于控制目标函数与用户自定义目标值的接近程度;
A、b满足线性不等式约束A?x?b,没有时取A=[ ],b=[ ];
Aeq、beq满足线性等式约束Aeq?x?beq,没有时取Aeq=[ ],beq=[ ];
lb、ub为变量的下界和上界:lb?x?ub;
nonlcon的作用是通过接受的向量x来计算非线性不等约束C(x)?0和等式约束
Ceq(x)?0分别在x处的值C和Ceq,通过指定函数柄来使用。
如:>>x = fgoalattain(@myfun,x0,goal,wei
ght,A,b,Aeq,beq,lb,ub,@mycon),先建立非线性约束函数,并保存为mycon.m:function [C,Ceq] = mycon(x)
C = ? % 计算x处的非线性不等式约束C(x)?0的函数值。
Ceq = ? % 计算x处的非线性等式约束Ceq(x)?0的'函数值。
options为指定的优化参数;
fval为多目标函数在x处的值;
attainfactor为解x处的目标规划因子;
exitflag为终止迭代的条件;
output为输出的优化信息;
lambda为解x处的Lagrange乘子
例5-14 控制系统输出反馈器设计。
设如下线性系统
??Ax?Bu x
y?Cx
0???o.50?10??100??210? B???22? C??其中:A??0? ????001????1?2??0??01??
要求设计输出反馈控制器K,使闭环系统
??(A?BKC)x?Bu x
y?Cx
在复平面实轴上点[-5,-3,-1]的左侧有极点,并要求 ?4?Kij?4(i,j?1,2)
解:上述问题就是要求解矩阵K,使矩阵(A+BKC)的极点为[-5,-3,-1],这是一个多目标规划问题。
先建立目标函数文件,保存为eigfun.m:
function F = eigfun(K,A,B,C)
F = sort(eig(A+B*K*C)); % 估计目标函数值
然后,输入参数并调用优化程序:
A = [-0.5 0 0; 0 -2 10; 0 1 -2];
B = [1 0; -2 2; 0 1];
C = [1 0 0; 0 0 1];
K0 = [-1 -1; -1 -1]; % 初始化控制器矩阵
goal = [-5 -3 -1]; % 为闭合环路的特征值(极点)设置目标值向量
weight = abs(goal) % 设置权值向量
lb = -4*ones(size(K0)); % 设置控制器的下界
ub = 4*ones(size(K0)); % 设置控制器的上界
options = optimset('Display','iter'); % 设置显示参数:显示每次迭代的输出
[K,fval,attainfactor] = fgoalattain(@eigfun,K0,goal,weight,[],[],[],[],lb,ub,[],options,A,B,C)
结果为:
weight =
5 3 1
Attainment Directional
Iter F-count factor Step-size derivative Procedure
1 6 1.885 1 1.03
2 13 1.061 1 -0.679
3 20 0.4211 1 -0.523 Hessian modified
4 27 -0.06352 1 -0.053 Hessian modified twice 5 34 -0.1571 1 -0.133
.
6 41 -0.3489 1 -0.00768 Hessian modified
7 48 -0.3643 1 -4.25e-005 Hessian modified
8 55 -0.3645 1 -0.00303 Hessian modified twice 9 62 -0.3674 1 -0.0213 Hessian modified
10 69 -0.3806 1 0.00266
11 76 -0.3862 1 -2.73e-005 Hessian modified twice 12 83 -0.3863 1 -1.22e-013 Hessian modified twice Optimization terminated successfully:
Search direction less than 2*options. TolX and maximum constraint violation is less than options.TolCon
Active Constraints:
1
2
4
9
10
K =
-4.0000 -0.2564
-4.0000 -4.0000
fval =
-6.9313
-4.1588
-1.4099
attainfactor =
-0.3863
6 最小二乘最优问题
6.1 约束线性最小二乘
有约束线性最小二乘的标准形式为
minCx?dxsub.to A?x?b
Aeq?x?beq
lb?x?ub 22
其中:C、A、Aeq为矩阵;d、b、beq、lb、ub、x是向量。
在MATLAB5.x中,约束线性最小二乘用函数conls求解。
函数 lsqlin
格式 x = lsqlin(C,d,A,b) %求在约束条件A?x?b下,方程Cx = d的最小二乘解x。
x = lsqlin(C,d,A,b,Aeq,beq) %Aeq、beq满足等式约束Aeq?x?beq,若没有不
等式约束,则设A=[ ],b=[ ]。
x = lsqlin(C,d,A,b,Aeq,beq,lb,ub) %lb、ub满足lb?x?ub,若没有等式约束,
则Aeq=[ ],beq=[ ]。
x = lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0) % x0为初始解向量,若x没有界,则lb=[ ],
ub=[ ]。
x = lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0,options) % options为指定优化参数
[x,resnorm] = lsqlin(?) % resnorm=norm(C*x-d)^2,即2-范数。
[x,resnorm,residual] = lsqlin(?) %residual=C*x-d,即残差。
[x,resnorm,residual,exitflag] = lsqlin(?) %exitflag为终止迭代的条件
[x,resnorm,residual,exitflag,output] = lsqlin(?) % output表示输出优化信息
[x,resnorm,residual,exitflag,output,lambda] = lsqlin(?) % lambda为解x的
Lagrange乘子
例5-15 求解下面系统的最小二乘解
系统:Cx=d
约束:A?x?b;lb?x?ub
先输入系统系数和x的上下界:
C = [0.9501 0.7620 0.6153 0.4057;…
0.2311 0.4564 0.7919 0.9354;…
0.6068 0.0185 0.9218 0.9169;…
0.4859 0.8214 0.7382 0.4102;…
0.8912 0.4447 0.1762 0.8936];
d = [ 0.0578; 0.3528; 0.8131; 0.0098; 0.1388];
A =[ 0.2027 0.2721 0.7467 0.4659;…
0.1987 0.1988 0.4450 0.4186;…
0.6037 0.0152 0.9318 0.8462];
b =[ 0.5251; 0.2026; 0.6721];
lb = -0.1*ones(4,1);
ub = 2*ones(4,1);
然后调用最小二乘命令:
[x,resnorm,residual,exitflag,output,lambda] = lsqlin(C,d,A,b,[ ],[ ],lb,ub);
结果为:
x =
-0.1000
-0.1000
0.2152
0.3502
resnorm =
0.1672
residual =
0.0455
0.0764
-0.3562
0.1620
0.0784
exitflag =
1 %说明解x是收敛的
output =
iterations: 4
algorithm: 'medium-scale: active-set'
firstorderopt: []
cgiterations: []
lambda =
lower: [4x1 double]
upper: [4x1 double]
.
eqlin: [0x1 double]
ineqlin: [3x1 double]
通过lambda.ineqlin可查看非线性不等式约束是否有效。
6.2 非线性数据(曲线)拟合
非线性曲线拟合是已知输入向量xdata和输出向量ydata,并且知道输入与输出的函数关系为ydata=F(x, xdata),但不知道系数向量x。今进行曲线拟合,求x使得下式成立:
minF(x,xdata)?ydatax2
2??(F(x,xdatai)?ydatai)2 i
在MATLAB5.x中,使用函数curvefit解决这类问题。
函数 lsqcurvefit
格式 x = lsqcurvefit(fun,x0,xdata,ydata)
x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub)
x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)
[x,resnorm] = lsqcurvefit(?)
[x,resnorm,residual] = lsqcurvefit(?)
[x,resnorm,residual,exitflag] = lsqcurvefit(?)
[x,resnorm,residual,exitflag,output] = lsqcurvefit(?)
[x,resnorm,residual,exitflag,output,lambda] = lsqcurvefit(?)
[x,resnorm,residual,exitflag,output,lambda,jacobian] =lsqcurvefit(?)
参数说明:
x0为初始解向量;xdata,ydata为满足关系ydata=F(x, xdata)的数据;
lb、ub为解向量的下界和上界lb?x?ub,若没有指定界,则lb=[ ],ub=[ ]; options为指定的优化参数;
fun为拟合函数,其定义方式为:x = lsqcurvefit(@myfun,x0,xdata,ydata),
其中myfun已定义为 function F = myfun(x,xdata)
F = ? % 计算x处拟合函数值fun的用法与前面相同;
resnorm=sum ((fun(x,xdata)-ydata).^2),即在x处残差的平方和;
residual=fun(x,xdata)-ydata,即在x处的残差;
exitflag为终止迭代的条件;
output为输出的优化信息;
lambda为解x处的Lagrange乘子;
jacobian为解x处拟合函数fun的jacobian矩阵。
例5-16 求解如下最小二乘非线性拟合问题
已知输入向量xdata和输出向量ydata,且长度都是n,拟合函数为
ydata(i)?x(1)?xdata(i)2?x(2)?sin(xdata(i))?x(3)?xdata(i)3
即目标函数为min?(F(x,xdatai)?ydatai)2 xi?1
其中:F(x,xdata)?x(1)?xdata2?x(2)?sin(xdata)?x(3)?xdata3
n
初始解向量为x0=[0.3, 0.4, 0.1]。
解:先建立拟合函数文件,并保存为myfun.m
function F = myfun(x,xdata)
F = x(1)*xdata.^2 + x(2)*sin(xdata) + x(3)*xdata.^3;
然后给出数据xdata和ydata
>>xdata = [3.6 7.7 9.3 4.1 8.6 2.8 1.3 7.9 10.0 5.4];
>>ydata = [16.5 150.6 263.1 24.7 208.5 9.9 2.7 163.9 325.0 54.3];
>>x0 = [10, 10, 10]; %初始估计值
>>[x,resnorm] = lsqcurvefit(@myfun,x0,xdata,ydata)
结果为:
Optimization terminated successfully:
Relative function value changing by less than OPTIONS.TolFun
x =
0.2269 0.3385 0.3021
resnorm =
6.2950
6.3 非线性最小二乘
非线性最小二乘(非线性数据拟合)的标准形式为
minf(x)?f1(x)2?f2(x)2???fm(x)2?L x
其中:L为常数
在MATLAB5.x中,用函数leastsq解决这类问题,在6.0版中使用函数lsqnonlin。
?f1(x)??f(x)?2? 设F(x)???????f(x)m??
则目标函数可表达为minF(x)x2
2??fi(x)2 i
其中:x为向量,F(x)为函数向量。
函数 lsqnonlin
格式 x = lsqnonlin(fun,x0) %x0为初始解向量;fun为fi(x),i=1,2,?,m,fun返回向
量值F,而不是平方和值,平方和隐含在算法中,fun的定义与前面相同。
x = lsqnonlin(fun,x0,lb,ub) %lb、ub定义x的下界和上界:lb?x?ub。
x = lsqnonlin(fun,x0,lb,ub,options) %options为指定优化参数,若x没有界,则
lb=[ ],ub=[ ]。
[x,resnorm] = lsqnonlin(?) % resnorm=sum(fun(x).^2),即解x处目标函数值。
[x,resnorm,residual] = lsqnonlin(?) % residual=fun(x),即解x处fun的值。
[x,resnorm,residual,exitflag] = lsqnonlin(?) %exitflag为终止迭代条件。
[x,resnorm,residual,exitflag,output] = lsqnonlin(?) %output输出优化信息。
[x,resnorm,residual,exitflag,output,lambda] = lsqnonlin(?) %lambda为Lagrage
.
乘子。
[x,resnorm,residual,exitflag,output,lambda,jacobian] =lsqnonlin(?) %fun在解x
处的Jacobian矩阵。
例5-17 求下面非线性最小二乘问题?(2?2k?ekx1?ekx2)2初始解向量为x0=[0.3,
k?110
0.4]。
解:先建立函数文件,并保存为myfun.m,由于lsqnonlin中的fun为向量形式而不是平方和形式,因此,myfun函数应由fi(x)建立:
fk(x)?2?2k?ekx1?ekx2 k=1,2,…,10
function F = myfun(x)
k = 1:10;
F = 2 + 2*k-exp(k*x(1))-exp(k*x(2));
然后调用优化程序:
x0 = [0.3 0.4];
[x,resnorm] = lsqnonlin(@myfun,x0)
结果为:
Optimization terminated successfully:
Norm of the current step is less than OPTIONS.TolX
x =
0.2578 0.2578
resnorm = %求目标函数值
124.3622
6.4 非负线性最小二乘
非负线性最小二乘的标准形式为:
minCx?dxsub.to x?0 22
其中:矩阵C和向量d为目标函数的系数,向量x为非负独立变量。
在MATLAB5.x中,用函数nnls求解这类问题,在6.0版中则用函数lsqnonneg。 函数 lsqnonneg
格式 x = lsqnonneg(C,d) %C为实矩阵,d为实向量
x = lsqnonneg(C,d,x0) % x0为初始值且大于0
x = lsqnonneg(C,d,x0,options) % options为指定优化参数
[x,resnorm] = lsqnonneg(?) % resnorm=norm (C*x-d)^2
[x,resnorm,residual] = lsqnonneg(?) %residual=C*x-d
[x,resnorm,residual,exitflag] = lsqnonneg(?)
[x,resnorm,residual,exitflag,output] = lsqnonneg(?)
[x,resnorm,residual,exitflag,output,lambda] = lsqnonneg(?)
例5-18 一个最小二乘问题的无约束与非负约束解法的比较。
先输入数据:
>>C = [ 0.0372 0.2869; 0.6861 0.7071; 0.6233 0.6245; 0.6344 0.6170];
>>d = [0.8587; 0.1781; 0.0747; 0.8405];
>>[C\d, lsqnonneg(C,d)]
ans =
-2.5627 0
3.1108 0.6929
注意:1。当问题为无约束线性最小二乘问题时,使用MATLAB下的“”运算即可以解决。2.对于非负最小二乘问题,调用lsqnonneg(C,d)求解。
7 非线性方程(组)求解
7.1 非线性方程的解
非线性方程的标准形式为f(x)=0
函数 fzero
格式 x = fzero (fun,x0) %用fun定义表达式f(x),x0为初始解。
x = fzero (fun,x0,options)
[x,fval] = fzero(?) %fval=f(x)
[x,fval,exitflag] = fzero(?)
[x,fval,exitflag,output] = fzero(?)
说明 该函数采用数值解求方程f(x)=0的根。
例5-19 求x3?2x?5?0的根
解:>>fun='x^3-2*x-5';
>>z=fzero(fun,2) %初始估计值为2
结果为
z =
2.0946
7.2 非线性方程组的解
非线性方程组的标准形式为:F(x) = 0
其中:x为向量,F(x)为函数向量。
函数 fsolve
格式 x = fsolve(fun,x0) %用fun定义向量函数,其定义方式为:先定义方程函数
function F = myfun (x)。
F =[表达式1;表达式2;?表达式m] %保存为myfun.m,并用下面方式调用:
x = fsolve(@myfun,x0),x0为初始估计值。
x = fsolve(fun,x0,options)
[x,fval] = fsolve(?) %fval=F(x),即函数值向量
[x,fval,exitflag] = fsolve(?)
[x,fval,exitflag,output] = fsolve(?)
.
[x,fval,exitflag,output,jacobian] = fsolve(?) % jacobian为解x处的Jacobian阵。 其余参数与前面参数相似。
例5-20 求下列系统的根
2x1?x2?e?x1
?x1?2x2?e?x2
解:化为标准形式
2x1?x2?e?x1?0
?x1?2x2?e?x2?0
设初值点为x0=[-5 -5]。
先建立方程函数文件,并保存为myfun.m:
function F = myfun(x)
F = [2*x(1) - x(2) - exp(-x(1));
-x(1) + 2*x(2) - exp(-x(2))];
然后调用优化程序
x0 = [-5; -5]; % 初始点
options=optimset('Display','iter'); % 显示输出信息
[x,fval] = fsolve(@myfun,x0,options)
结果为
Norm of First-order
Iteration Func-count f(x) step optimality CG-iterations 1 4 47071.2 1 2.29e+004 0
2 7 6527.47 1.45207 3.09e+003 1
3 10 918.372 1.49186 418 1
4 13 127.74 1.55326 57.3 1
5 16 14.9153 1.57591 8.26 1
6 19 0.779051 1.27662 1.14 1
7 22 0.00372453 0.484658 0.0683 1
8 25 9.21617e-008 0.0385552 0.000336 1
9 28 5.66133e-017 0.000193707 8.34e-009 1
Optimization terminated successfully:
Relative function value changing by less than OPTIONS.TolFun
x =
0.5671
0.5671
fval =
1.0e-008 *
-0.5320
-0.5320
?12?例5-21 求矩阵x使其满足方程x?x?x???,并设初始解向量为x=[1, 1; 1, 1]。 34??
解:先编写M文件:
function F = myfun(x)
F = x*x*x-[1,2;3,4];
然后调用优化程序求解:
>>x0 = ones(2,2); %初始解向量
>>options = optimset('Display','off'); %不显示优化信息 >>[x,Fval,exitflag] = fsolve(@myfun,x0,options) 则结果为
x =
-0.1291 0.8602
1.2903 1.1612
Fval =
1.0e-003 *
0.1541 -0.1163
0.0109
exitflag =
1
. -0.0243
篇4:MatLab实习心得体会
MatLab实习心得体会
我从中国石油大学(北京)来到大庆油田勘探开发研究院实习,刚刚来到这里时我内心充满了激动和喜悦,对这个有着辉煌成绩的科研单位充满了期待。到了这里没多久我就参加培训中心组织的入院教育,对研究院的辉煌过去有了更深刻的了解,那时我就下定决心在研究院好好实习,多学习一些现场经验,为以后的工作打下良好的基础。
一个月的入院培训结束后,经过自己申请和中心安排我被分到了地震资料处理一室,实习期间地震一室的副主任陈志德是我的现场导师,陈主任有着丰富的理论知识和现场经验,能够成为他的学生我感到非常的高兴。最初他把我分到了高分辨率处理解释项目组,工作内容主要是跟着项目组成员用landmark做一些解释性的工作,期间我跟着张晶师傅学习到了如何加载地震数据和测井数据;如何应用测井数据做了合成地震记录,另外我还做了一些地层解释方面的工作。landmark实习大概进行了三个多月,从中我学习到了地震解释的一些基本流程,虽然以后从事的是地震资料处理方面的工作,但有解释方面的实习经历对于提高自己的能力也是很有好处的。
十二月份研究院举行了硕士研究生开题汇报,现场导师陈志德针对大庆地区扶扬油层中浅层高频噪声干扰严重的现状给我定出了小波阈值去噪的论文题目,并且小波变换也是我学校导师的研究方向。他根据我的研究方向给我的论文制定了如下三个目标:
1. 小波分解压制单频噪音
应用matlab设计一个含有随机噪音的一维正演模型,采用小波分解的方法压制噪音,最大程度的.保留有效信号。
2. 小波分解压制随机噪音
应用matlab 设计一个含有随机噪音的二维正演模型,并利用小波变换阈值方法压制噪音,然后对软、硬阈值去噪方法进行比较,最后得出结论。
3. 对实际地震记录的噪音压制
在对理论模型进行噪音压制的基础上,对实际的二维数据进行了噪音压制,对比分析噪音压制前后的结果。
经过这一年半的实习我基本上达到了上述目标,完成了论文的预期效果。论文中编制的程序加以优化后就可以在实际生产上进行应用。
下面我简单谈一下我论文的具体实现过程:
我首先做了两个正演模型:一个为楔状砂体正演模型,另外一个为砂泥岩透镜体正演模型。模型的生成均是以褶积理论为基础的,用标准雷克子波与给定反射系数进行褶积,最后得到合成记录。合成记录生成后我又在其上加上了均值为零的随机分布的高频白噪声,如何去掉这些噪声就是本次论文的重点。我采用的是小波阈值去噪的方法,该方法的理论基础为:属于besov空间的信号在小波域内其能量主要集中在有限的几个系数中,而噪声的能量却分布于整个小波小波域内,因此经过小波变换后,信号的小波变换系数大于噪声的小波变换系数,于是可以找到一个合适的数λ作为阈值。当小波变换系数w小于该阈值时,认为这是的w主要时由噪声引起的;当w大于该阈值时,认为这是的w主要是由信号引起的,从而实现信噪分离。在论文研究过程中对于小波基的选择、尺度参数的选择和阈值的选择都是经过了反复试验确定的,目的就是使论文能达到最好的效果,我也希望这次论文的试验工作能给从事小波去噪研究的人提供一些帮助。
除了完成自己的硕士论文之外,我还参与了科室的其他项目,从最初的用蓝马做地震合成记录到后来的用双狐软件画出产能的饼状图和油气水含量的柱状图,再到后来的用matlab画出野外地表的高程图。每次这样的工作经历都让我收获很多,使我受益匪浅。
篇5:matlab学习心得体会
matlab中有丰富的图形处理能力,提供了绘制各种图形、图像数据的函数。他提供了一组绘制二维和三维曲线的函数,他们还可以对图形进行旋转、缩放等操作。matlab内部还包含丰富的数学函数和数据类型,使用方便且功能非常强大。
本学期通过对matlab的系统环境,数据的各种运算,矩阵的分析和处理,程序设计,绘图,数值计算及符号运算的学习,初步掌握了matlab的实用方法。通过理论课的讲解与实验课的操作,使我在短时间内学会使用matlab,同时,通过上机实验,对理论知识的复习巩固实践,可以自己根据例题编写设计简单的程序来实现不同的功能,绘制出比较满意的二维三维图形,在实践中找到乐趣。
matlab是一个实用性很强,操作相对容易,比较完善的工具软件,使用起来比较方便,通过操作可以很快看到结果,能够清晰的感觉到成功与失败,虽然课程中也会出现一些小问题,但是很喜欢这门课程。
篇6:matlab学习心得体会
这是我在学习的过程中的一些技巧,或许对你有帮助,可能字数不你能满足你的要求,但是绝对是精华。
1,如果你要是不是计算机转业的,只是为了方便自己的工作或学习,那么你没有必要把matlab教程全部学会,只需要学你需要的那部分即可,比如,绘图,矩阵运算,等等,根据你个人的需要而定,但是基本命令、数据类型、基本的程序结构(条件语句,循环语句,嵌套)、文件的io是必须看的,因为任何一个程序都需要这几个基本的块。
2,你最好找一个熟悉编程的人来辅助你的学习,这就包括很多编程的技巧问题,程序的结构设计问题,对于程序的运行效率非常有帮助。有的时候,你编出来的程序,能够运行,但是耗时太长,也就是说你的程序没有错,但是不适合实际。或者说,对于规模小的问题能够解决,但是规模大一点的问题就需要很长很长的.时间,这就需要对程序的结构和算法问题进行改进(亲身体会,编完一个程序,小的例子可以运行出结果,但是大例子需要很长时间,所以必须要改进一下)。
3,你需要找一本matlab的函数工具词典,就像汉语词典一样,你要尽量多的熟悉matlab自带的函数,及其作用,因为matlab的自带函数特别多,基本上能够满足一般的数据和矩阵的计算,所以基本上不用你自己编函数(如vb中,大部分的函数都需要自己编)。这一点对你的程序非常有帮助,可以使你的程序简单,运行效率高,可以节省很多时间(亲身体会)。切记!!!
4,你把基本的知识看过之后,就需要找一个实际的程序来动手编一下,不要等所有的知识都学好之后再去编程,你要在编程的过程中学习,程序需要什么知识再去补充(这一条是别人教我的,很管用),编程是一点一点积累的,所以你要需做一些随手笔记什么的。
5,编程问题最头疼的不是编程序,而是调程序,所以在你的程序编完之后,一定要进行验证其正确性,你要尽量多的设想你的问题的复杂性,当然,要一步一步复杂,这样才能保证你的程序的适用性很强。
篇7:matlab学习心得体会
学习matlab是听说它是一个功能强大的数学软件,但是正被微积分的计算缠身,听说有一个高级的计算器当然高兴,以后可以偷懒了,当然现在不能偷懒。听说关于自动化的计算特别复杂,如果有一种软件能帮忙解题,那是一种极大的解脱,有益于缩短研究时间。目前我只知道有三种数学软件,都是国外的,没有国内的,差距挺大的。matlab学起来挺顺手的,比c语言简单。但是深入学习的时候却困难重重,因为很多知识都没有学习,就算知道那些函数,也没有什么用处。老师布置的作业难度大,写一篇实验,大一什么都不会,写一篇这种论文谈何容易。最多也就会一些数值计算、符号计算、简单绘图,根本不会什么实验。
学习matlab体会最多的是这个软件的功能强大,好多数学题都被轻易的解出。但是有一点遗憾,不知是我不会用,还是它没个功能,已知空间的电荷分布,求空间的电场分布。其中电场分布是无法用函数表达式表示。我知道计算机肯定可以实现,但是这个软件能不能实现就不知道了,我看过许多资料,但是在这方面没有提到相关信息。
总之,这个软件功能强大,不知什么时候国内才有类似的软件。
篇8:matlab定义函数
(*matlab 7.0及以上)
首先建立M文件或直接点击(File/New/Function)建立函数文件,其中函数文件的格式是:
function [输出变量] = 函数名称(输入变量)
% 注释
% 函数体
如下所示,是编写的一个求1到n之和的求和函数 eg_sum,按照上述格式,编写代码如下并保存文件,注意文件命名时不能以数字开头:
function [s] = eg_sum( n )
% calculate the sum of 1..n
s = 0;
for i = 1:n
s = s + i;
end
回到控制台Command Window(主界面),注意要使用之前保存的函数文件名来调用函数,如下所示:
>>clear
>>a = eg_sum(10)
运行结果: a = 55
许多网友说函数名一定要与函数文件名一致,其实不是这样子的,只要知道调用函数时是通过函数文件名调用的这点即可!比如下图所示,即使文件名仍然是eg_sum,但我可以修改函数名为:my_sum 调用时用文件名调用就好,如下所示:
>>b = eg_sum(10)
运行结果: b = 55
在调用函数时,请确保已将matlab当前目录切换到函数文件所在处,不然会报错:Undefined function 'eg_sum' for input arguments of type 'double'.
matlab中函数定义(m文件的生成)及调用实例:
篇9:matlab定义函数
首先了解函数的基本结构。如图,函数文件一般包括三个部分,即函数名,注释内容和函数体。其中,中括号里面的内容可以省略。
2与建立M文件类似,在命令窗口中输入edit。
3如图,编写函数,需要注意函数命名规则,注释部分可有可无,用%开始。
4编写完成后保存文件,最好保存在当前工作路径的文件夹。
5函数调用:
如图,直接输入函数名,形参,就能返回计算结果。
6查看函数说明:
和查看其它函数说明一样,输入“help 函数名” 就能看到这个函数的注释说明。
这里只是举一个简单例子,实际情况的函数体可能复杂得多。
篇10:matlab实验心得体会
matlab实验心得体会
这个就是我自己做出来的,发现用soundsc听出来还行,但是用wavwrite就变的很难听。后来发现PB写的很好,而且还能够把前面一段没有噪音的部分给保存下来,我就看了他的代码,有几点体会:
1.将代码写在.m文件里,这样只需要该文件里的就可以而不必每次都去敲命令;
2.PB对于vector使用的'比较熟,我一开始也想到能不能只将后面一段由噪声的给滤掉而保留以前的,但是没想到什么方法,看了PB的代码发现,他对于vector了解的比较深刻,我上面的想法最后只使用一句代码就搞定了
3.对于噪声频率,一定要选准确,PB对每一段噪声只使用的一个频率,就将噪声滤干净了,我用了每段噪声附近的几个波形还没有得到理想波形,最后我发现我选的中心频率和PB的只相差10~25赫兹,所以一定要精确,后来WH又试了一下,只发现改变5HZ的频率都不行
4.加入团队以来,尤其是加入种子班之后就一直告诫自己要时刻抱着一个学习的心态,对于任务不要只是敷衍,完成就好,而是自己一定要从中学到东西,而且在这个过程中一定要逐步掌握自己的学习方法,但是就是这个Matlab,我就是在敷衍了事,所以没有什么事情是可以敷衍的,学习发生在每时每刻,不能因为这是必上的课程而自己没有兴趣就蒙混过关,应该利用这个机会锻炼自己,积极起来,改变自己懒惰的弱点。
PS:附上修改后的代码
%get the samples rate and vector of the wave
[xx, fs] = wavread('SunshineSquare');
xx = xx';
specgram(xx, [], fs);
%^get the A from the frequencies of the noises
fnoise = [0 1575 3150 4725];
ww = 2*pi*fnoise/fs;
A = -2*cos(ww);
%seperate the wave based on the tone “du”
leng = length(xx);
du = floor((7.749/10.791)*leng);
%determine the h[n] of correspond noise
hh = [1 A(1) 1];
for i = 2:4
hh1 = [1 A(i) 1];
hh = conv(hh, hh1);
end
%filter the noise
yy = filter(hh, 1, xx);
%delete the tone “du”
yy(du - 65 : du + 65) = 0;
du = floor(10.751/10.791*leng);
yy(du - 100 : du + 80) = 0;
figure(2);
specgram(yy, [], fs);
wavwrite(yy,fs,32,'filter1');
%replace the wave which has been filtered with the good part
du = floor((7.749/10.791)*leng);
yy(1:du)=xx(1:du);
%delete the tone “du”
yy(du - 65 : du + 65) = 0;
du = floor(10.751/10.791*leng);
yy(du - 100 : du + 80) = 0;
%paint the picture and play it
figure(3);
specgram(yy, [], fs);
soundsc(yy,fs);
wavwrite(yy,fs,32,'filter2');
篇11:[]MATLAB常用数据绘图示例
1.三维曲线
>>t=0:pi/50:10*pi;
>>plot3(sin(2*t),cos(2*t),t)
>>axis square
>>grid on
2.一窗口多图形
>>t=-2*pi:0.01:2*pi;
>>subplot(3,2,1)
>>plot(t,sin(t))
>>subplot(3,2,2)
>>plot(t,cos(t))
>>subplot(3,2,3)
>>plot(t,tan(t))
>>axis([-pi pi -100 100])
>>subplot(3,2,4)
>>plot(t,cot(t))
>>axis([-pi pi -100 100])
>>subplot(3,2,5)
>>plot(t,atan(t))
>>subplot(3,2,6)
>>plot(t,acot(t))
3.图形样式.标注.题字(也可以利用菜单直接Insert)
>>x=0:pi/20:2*pi;
>>plot(x,sin(x),'b-.')
>>hold on
>>plot(x,cos(x),'r--')
>>hold on
>>plot(x,sin(x)-1,'g:')
>>hold on
>>plot(x,cos(x)-1)
>>xlabel('x');
>>xlabel('x轴');
>>ylabel('y轴');
>>title('图形样式.标注等');
>>text(pi,sin(pi),'x=\pi');
>>legend('sin(x)','cos(x)','sin(x)-1','cos(x)-1');
>>[x1,y1]=ginput(1) %利用鼠标定位查找线上某点的值
x1 =
2.0893
y1 =
-0.5000
>>gtext('x=2.5') %鼠标定位放置所需的值在线上
4.>>fplot('[sin(x),cos(x),sqrt(x)-1]',[0 2*pi])
M文件:myfun.m
内容如下:
function y=myfun(x)
y(:,1)=sin(x);
y(:,2)=cos(x);
y(:,3)=x^(1/2)-1;
再运行:>>fplot('myfun',[0 2*pi])
同样可以得到下图
5.符号绘图
>>[x,y]=fplot('sin',[0 2*pi]);
>>[x1,y1]=fplot('cos',[0 2*pi]);
>>plot(x,y,'-r',x1,y1,'-.k')
>>legend('y=sinx','y=cosx')
6.线宽设置
>>x=[-2:0.2:2];
>>y=exp(x)-sin(x);
>>plot(x,y,'-or','linewidth',2)
7.画出y1=6(sinx-cosx),y2=x2^x-1的图形
>>x=[-3:0.1:3];
>>y1=6*(sin(x)-cos(x));
>>y2=x.*2.^x-1;
>>plot(x,y1,'-r',x,y2,'-.k','linewidth',2)
8.绘制心形图r=2(1-cosθ)的极坐标图形
>>theta=[0:0.01:2*pi];
>>polar(theta,2*(1-cos(theta)),'-k')
>>polar(theta,2*(1-cos(theta)),'-or')
9.用双轴对数坐标绘制y=x*3^x-30的图形
>>x=logspace(-3,3);
>>y=x.*3.^x-30;
>>loglog(y,'-or','linewidth',2);
>>grid on
10.绘制数据向量的单轴对数坐标图形
>>x=[1:50];
>>y=[1:50];
>>semilogx(x,y,'-*b')
%绘制横轴为对数坐标
%纵轴为线性坐标
>>grid on
>>semilogy(x,y,'-*b')
%绘制纵轴为对数坐标
%横轴为线性坐标
>>grid on
11.绘制矩阵的条形图,并求出句柄属性值向量,
>>A=[1 2 3;4 5 6;7 8 9];
>>h=bar(A)
h =
171.0031 174.0026 176.0026
12.绘制矩阵的水平条形图。
>>y=[3 2 -2 2 1;-1 2 3 7 1;7 2 -3 5 2];
>>x=[1:3];
>>barh(x,y)
13.绘制矩阵的面积图。
>>y=[3 2 -2 2 1;-1 3 3 7 2;-7 5 5 9 3];
>>area(y)
14.绘制矩阵的二维饼图
>>x=[1 2 3;4 5 6;7 8 9]; explode=[0 1 0 1 0 1 0 1 0]; pie(x,explode)
15.自行确定数据向量,绘制其散点图。
>>x=rand(1,100);y=randn(1,100);scatter(x,y,20)
16.自行确定数据,绘制其柱形图。
>>x=[-2:0.01:4];y=randn(1131,1);hist(y,x)
17.绘制y=sinx在[0,2*pi]上的误差图。
>>x=[0:pi/20:2*pi];
>>y=sin(x);
>>E=std(y)*ones(size(x));
>>errorbar(x,y,E) %条形控制
18.绘制火柴杆图。
>>x=[1 1.5 2;3 3.5 4;5 5.5 6];
>>y=[4 3 2;4 8 9;2 7 3];
>>stem(x,y,'fill')
%fill意思是“实心点”
19.绘制羽列图。
>>U=[-90:5:90]*pi/180; %建立等间距数据
>>V=2*ones(size(U)); %根据U建立数据
>>=pol2cart(U,V); %转换数据为直角坐标形式
>>feather(U,V)
20.同一窗口绘制和在[0,30]上的图形。
>>x=[0:0.01:30];y1=50*exp(-0.05*x).*sin(x); y2=0.5*exp(-0.5*x).*cos(x);
>>plotyy(x,y1,x,y2,'plot')% 用左侧y标度绘制(x,y1),用右侧y标度绘制(x,y2)
21.绘制8阶魔方矩阵的等值线图和阶梯图。
>>A=magic(8);contour(A) %绘制等值线图stairs(A) %绘制阶梯图
22.绘制玫瑰花图。
>>theta=rand(1,200)*2*pi; rose(theta,25)
23.绘制罗盘图。
>>x=rand(20,1);y=randn(20,1); compass(x,y)
24.绘制函数的梯度场矢量图。
>>[x,y]=meshgrid([-2:0.1:2]); %建立栅格点数据向量
>>z=3.*x.*y*exp(-x.^2-y.^2)-1; %计算函数值向量
>> gradient(z,0.2,0.2); %计算梯度值向量
>>quiver(x,y,u,v,2) %绘制梯度场矢量图
25.给定向量x,y生成网格矩阵。
>>x=[1 2 3 4]; y=[10 11 12 13 14];
>>=meshgrid(x,y)
U =
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
V =
10 10 10 10
11 11 11 11
12 12 12 12
13 13 13 13
14 14 14 14
26.生成一个5阶高斯分布矩阵,并给出相应的x,y向量矩阵,
>>[X,Y,Z]=peaks(5)
27.在-4<=x<=4,-4<=y<=4区域上绘制z=x^2+y^2的三维网格图。
>>[x,y]=meshgrid(-4:0.125:4); z=x.^2+y.^2; meshc(x,y,z)
28.绘制高斯分布函数的网格图。
>>[x,y]=meshgrid(-3:0.125:3); z=peaks(x,y); meshz(x,y,z)
29.用surf绘制高斯分布函数的曲面图。
>>[x,y]=meshgrid(-3:0.125:3);z=peaks(x,y);surf(x,y,z)
30.绘制曲线图。
>>t=[0:pi/200:10*pi]; x=2*cos(t); y=3*sin(t); z=t.^2; plot3(x,y,z)
31.利用peaks函数产生的数据绘制其带形图。
>>[x,y]=meshgrid([-2*pi:pi/5:2*pi],[-2:1/5:2]); z=peaks(x,y); ribbon(y,z)
32.绘制三维饼图。
>>A=[1 2 3;4 5 6;7 8 9]; ex=[1 0 0;4 0 0;0 8 0]; pie3(A,ex)
33.在各种style参数的条件下绘制矩阵的三维条形图。
>>z=[1 2 3;4 5 6;7 8 9];>>bar3(z,'detached')
>>title('bar3函数以detached参数绘制A=[1 2 3;4 5 6;7 8 9]的条形图')
>>bar3(z,'grouped')>>title('bar3函数以grouped参数绘制A=[1 2 3;4 5 6;7 8 9]的条形图')
>>bar3(z,'stacked')>>title('bar3函数以stacked参数绘制A=[1 2 3;4 5 6;7 8 9]的条形图')
34.绘制柱形图。
>>t=[0:pi/50:2*pi]; [x,y,z]=cylinder(t.*sin(t)); surf(x,y,z)
>>cylinder(t.^2)
>>title('cylinder(t^2)绘制的柱形图')
35.绘制三维散点图。
>>x=rand(500,1); y=randn(500,1); z=randn(500,1); scatter3(x,y,z,'p','r')
36.绘制三维火柴杆图。
>>x=[1:0.5:20]; y=sqrt(x); z=sqrt(x.^2+y.^2); stem3(x,y,z,'filled')
37.绘制高斯分布函数的三维瀑布图。
>>[x,y]=meshgrid(-4:0.05:4); z=peaks(x,y); waterfall(x,y,z)
38.绘制等值线图。
>>[x,y]=meshgrid(-3:0.1:3); z=2-x.^2-y.^2; contour3(z,20)
39.绘制一个球面。
>>[x,y,z]=sphere(40); >>surf(x,y,z)
40.绘制三角形网格图和三角形表面图。
>>[x,y]=meshgrid(-3:0.5:3); z=x.*exp(-x.^2-y.^2); tri=delaunay(x,y); %建立三角形网格
>>trimesh(tri,x,y,z); trisurf(tri,x,y,z)
41.>>t=[-3*pi:pi/100:3*pi]; x=3.*cos(t); y=2.*sin(t); z=t.^2; comet3(x,y,z) % 三维彗星图
42.绘制曲面z的表面法向量向量图。
>>[x,y]=meshgrid([-3:0.2:3],[-2:0.5:2]);
>> z=x.*exp(-x.^2-y.*2);
>>=surfnorm(x,y,z); %计算表面法向向量
>>quiver3(x,y,z,u,v,w,1.2) %三维向量图
>>hold on
>>surf(x,y,z)
>>hold off
43.绘制空间立体在-2<=x<=2, -2<=y<=2, -2<=z<=2上的切片图。
>>[x,y,z]=meshgrid(-2:0.2:2); v=x.*exp(-x.^2-y.^2-z.^2); xi=[-1.2 0.8 2];yi=2;zi=[-2 -0.2];
>>slice(x,y,z,v,xi,yi,zi)
44.在【-pi,pi】上制作一个不断绘制正弦曲线的动画。
>>x=[-pi:0.02:pi]; y=sin(x);
>>h=plot(x,y,'r-')
h =
171.0011
>>axis([-4 4 -1 1])
>>axis square
>>grid off
>>set(h,'erasemode','xor','markersize',10)
>> while 1
drawnow
x=x+0.01;y=sin(x)-0.01;
set(h,'xdata',x,'ydata',y)
if(x>pi)|(y<-1)
x=[-pi:0.02:pi];y=sin(x);
end
end
45.创建一个三维曲面z=x^2+y^2的动画。
>>x=[-2:0.2:2];
>>[x1,y1]=meshgrid(x);
>>z=x1.^2+y1.^2+eps;
>>surf(z);
>>ta=axis;
>>ft=moviein(40);
>> for i=1:40
surf(sin(2*pi*i/20)*z,z)
axis(ta)
ft(:,i)=getframe;
end
>>movie(ft,20)
46.通过调整Z的数值来建立peaks函数的动画。
>>z=peaks;
>>surf(z);
>>axis tight
>>set(gca,'nextplot',
'replacechildren');
>> for i=1:20
surf(sin(2*pi*i/20)*z,z)
f(i)=getframe;
end
>>movie(f,30)
47.cool色图+faceted系统默认颜色阴影和默认色图jet+interp颜色阴影绘制peaks函数图。
>>z=peaks;
>>surf(z)
>>colormap(cool)
>>shading faceted
>>z=peaks;
>>surf(z)
>>colormap(jet)
>>shading interp
48.创建一个三维表面图并设置不同的视点。
>>[x,y]=meshgrid([-3:0.2:3]);
>>z=x.*exp(-x.^2-y.^2); surf(z)
>>[ax,el]=view
ax =
-37.5000
el =
30
>>view(30,-30)
49.绘图工具栏介绍。
★ 实验课心得体会
★ 养成教育心得体会
★ 计算机学习报告
★ 实验课心得体会
★ 实验总结
【matlab学习心得(共11篇)】相关文章:
实验心得总结2023-06-03
实验总结怎么写2022-08-14
关于数学建模总结2023-03-04
大学计算机实验心得体会怎么写2023-05-06
计算机实验总结2022-12-31
数字图像处理实验报告2023-06-06
数学建模比赛总结2022-08-12
数学建模征文2024-04-21
家长老师走进课堂2022-05-06
数学建模论文报告2022-05-06