第一篇:MATLAB知识总结
1、命令x=0:0.2:2中的赋值格式是matlab常用的变量赋值格式,其中0表示初始值,0.2表示增量,而2表示终止值。若数组x无规律可循,那么x赋值得逐一输入单个元素了,这时要使用赋值格式符“[]”,如x=[0 5 8 1]表示把0 5 8 1 赋值给变量x.2、命令y=x.^3中的“.”表示对数组x逐一操作而不是把数组看做一个整体进行操作,而“^”表示数组的幂指数即对数组进行相乘的操作。
3、假设要建立起始值为0,终止值为,间隔为0.1的数组x,那么用前三种方法创建x的具体命令为:
4.x=[0 0.1*pi
0.2*pi 0.3*pi 0.4*pi 0.5*pi 0.6*pi 0.7*pi 0.8*pi 0.9*pi pi] x=(0:0.1:1)*pi x=linspace(0,pi,10)如果没有10这个数字表示将[0, ]分成间距相等的100个点。而x=logspace(1,2,10)表示对数(lg)间距相等的十个点,如没有10这个数字,表示将在[10,102]之间产生对数间距相等的50十个点。
5.tic和toc用来记录时间。6.tic
A=[];
A=diag(5*ones(5,1))+diag(ones(4,1),1)+diag(ones(4,1),-1)
Toc 可用来做出一个矩阵。
7.学会掌握for——end的循环语句。
8.学会使用while-end循环语句,此语句适合适用于循环次数不确定情况下。只要表达式的值非零即为逻辑“真”,则程序就会一直循环下去。
9.循环终止问题,用break来实现。
10.调试程序时文件名是什么就在命令窗口输入什么,而且要先在第一行弄出红点才行。11.符号变量的创建用sym和syms,后者可创建多个符号变量。
12.创建符号方程用的格式为:equ=('方程'),千万不能用这种格式:equ=方程。13.数值矩阵的表现形式是约数,而符号型矩阵的表现形式是精确的。数值型变量和符号型变量之间不能直接运算,即使它们都可能是数字,得先把数值型变量转化为符号型变量。
14.一般来说,存储matlab文件时用字母来命名才能有效。15.创建一个符号型实数的一般格式为: x=sym(x,'real')Y=sym(y,'real')或者sym x y real;要想清除x的符号属性可使用以下命令:x=sym(x,'unreal')或syms x unreal 16,real(x)表示x实部,而imag(x)表示x的虚部,而conj(x)表示x的共厄复数。17.matlab运算中涉及到数值变量、字符变量和符号变量(级别按顺序一次增高)的运算,系统将各变量转化为最高级别的运算。
18.将其他类型的变量转化为符号型变量的格式为:s=sym(f),f不能是矩阵或者非法的表达式。
19.用s=int2str(x)可以将x转化为字符变量(存储字节大些)s,当x为有理数时,得四舍五入;当x为虚数时,将只对x的实部进行转换。
20.S=num2str(x)也是将x转化为字符变量s,只是对x无任何限制。21.将其他变量转化为数值变量:
1)x=double(s),如果s中含有非数值的符号,系统将给出错误的信息,当s为字符变量时,该命令将s转化为数值矩阵x。矩阵中的元素值为s中的相应字符的ASCII码值。
2)当s是一个包含非数字字符的变量时,str2num(s)命令将返回一个空矩阵s。
3)x=numeric(s)命令可将变量s转化为数值变量x,这里s既可以是字符变量也可以是符号变量,但s不能是矩阵,否则将出错误信息。
22.利用findsym命令可以找到符号表达式或者符号矩阵中的符号变量,并且符号变量以
23.Pretty将代数式A由机器格式转变为书写格式,在转化过程中,不会对A进行任何简化。
24.collect(A):按默认变量对表达式A进行降幂排列,默认变量是指由findsym确定的变量。
25.collect(A,v)按照指定变量v对表达式A进行降幂排列。26.expand(S):将表达式S展开。
27.horner(S):把符号表达式S展开为:ax(bx(cx···(dx+z)+e···)+f)+g.28.factor(S):把符号表达式S展成重叠式。
29.Simplify(S):用一般化简方法化简符号表达式S.但共有六种化简法,此种化简法常用,但不具精确性。
30.不定化简法:simple(S):用不定化简法化简符号表达式S。若S为矩阵,则返回结果为整个矩阵(而不是单个元素)的最简短表达式。
31.[R,HOW]=simple(S):用不定化简法化简表达式S,其中R为S的化简结果,HOW为对应结果所采用的化简方法或者转换方法。
32.combine(trig)用三角函数的运算性质对主对角代数式进行化简;
convert(exp):将代数式尽量转化为由ex、eix表示的指数形式。
convert(sincos):将代数式尽量转化为由sin(x)、cos(x)形式表示的式子。
convert(tan):将代数式尽量转化为由tan(x)形式表示的式子。
33.[n,d]=numden(S)用分子分母法化简符号表达式S。返回结果n为分子,d为分母。34.[Y,SIGMA]=subexpr(X,'SIGMA'):X表示待整理的符号表达式或者符号表达式的矩阵。
SIGMA:在整理过程中提出的各种因子将以矩阵的格式保存在名为SIGMA的变量中。Y:已提取各种因子后,将整理完毕的符号表达式或者符号表达式的矩阵保存在Y中。35:SS=subs(s,old,new):s为符号表达式,old为s中将要被代替的“旧”变量名,new是用来代替s中old的“新”变量名或代数式。(注意subs不但可以进行单一变量的代换,还可以同时进行多个变量的替换)
36.SS=subs(S)利用由函数或MATLAB工作空间中得到的具体值(无论是数值型还是字符型)来代替S中相应的所有变量。
37.SS==subs(s,new):用new来代替S中的自由符号变量。
第五章
微分:
1.diff(x,'v')可用来对变量'v'求导,diff(x,'v',n)是对变量‘v’求n阶导数。2.diff(X,N)按第一个非单元素集合的维计算X的N阶导数。积分:
不定积分:1.int(s);int(s,v)这两种格式都是求s的不定积分,求别在于:第一种调用格式以findsym(S)命令寻找到的变量为自变量,计算S的不定积分;而第二种调用格式则针对指定变量V进行不定积分运算。
定积分:int(S, v, a, b)其中S为表达式,v为指定变量,a为积分下限,b为积分上限。当a或b取inf或(-inf)时该命令计算的是广义积分。但是这只能得到一个具体的表达式,而使用numeric便可以得到一个值。求极限:
limit(S,v):其中S为表达式,v为指定变量。该命令的功能:用于求当v→0时的表达式S的极限值。
limit(S):其中S为表达式,该命令的功能:用于求当系统默认变量→0时的表达式S的极限值。
limit(F,x,a):该命令的功能:用于求当x→a时表达式F的极限值。
limit(F,x,a,'right'):该命令的功能:用于求当x→a时表达式F的极限值(即右极限值)。
limit(F,x,a,'left'):该命令的功能:用于求当x→a时表达式F的极限值(左极限值)。求级数:
symsum(S):以函数findsym(S)j决定的变量(比如说自变量为K),求K从0开始到k-1为止S的前K项和。
symsum(S,v):功能上,只不过指定变量为v。
symsum(S,v,a,b):求自变量V从a到b时S的和。经常和simple连用。级数展开:taylor(f):用于求f关于默认变量的5阶近似麦克劳林多项式。taylor(f,n):用于求f关于默认变量的n-1阶近似麦克劳林多项式。taylor(f,v):同上,只不过自变量为指定变量V.taylor(f,a): 前三种调用格式求出的结果均是关于自变量等于零的展开式,而该命令则可以求解函数f在自变量等于a处的泰勒展式。
多元函数泰勒级展开式:maple('readlib(mtaylor)');maple('mtaylor(f,v,n,w)')傅里叶展开式先建立个函数mfourier 1)函数的建立:function [a0,an,bn]=mfourier(f)
syms n x
ao=int(f,-pi,pi)/pi;
an=int(f*cos(n*x),-pi,pi)/pi;bn=int(f*sin(n*x),-pi,pi)/pi;dig命令:diag(v,k):当V是由n个元素组成的矢量时,该命令的返回值是阶数为n+abs(k)的方阵。其中对角线由矢量v的元素组成,其余元素由0组成。当k=0时,v为主对角线;当k>0时,v位于主对角线之上;当k<0时,v位于主对角线之下。diag(v):与dig(v,0)完全相同,把矢量v置于主对角线之上。
diag(A,k):其中A为矩阵。该命令返回值是由矩阵A的第k条对角线的元素所组成的列矢量。
diag(A):相当于diag(A,0),得到由矩阵A的主对角线元素所组成的列矢量。triu命令(抽取矩阵的上三角部分)triu(A):抽取矩阵的上三角部分组成一个新的矩阵,其余元素用0来填充。
triu(A,k):抽取矩阵的第k条对角线上的三角部分组成一个新的矩阵,其余元素用0填充。当k=0时,triu(A,0)与triu(A)功能完全相同,抽取矩阵A主对角线以上的三角部分;k>0抽取元素对应矩阵A主对角线以上、第k条对角线以上的部分,k<抽取元素对应矩阵A主对角线以下、第k条对角线以上的部分。tril命令(抽取矩阵的下三角部分):和triu相似。inv命令(矩阵求逆):inv(A):返回矩阵A的逆。det命令(求矩阵的行列式):det(A):返回矩阵A的行列式。
rank命令(求矩阵的秩):rank(A,tol):返回矩阵A的奇异值中大于误差tol的奇异值个数。
rank(A):同上,默认精度tol=max(size(A)*norm(A))*eps.null命令(求矩阵的零空间的正交基):Z=null(A):求矩阵A的零空间的正交基,它是由矩阵A的奇异值分解得到的。
Z=null(A,'r'):求矩阵A的零空间的正交基,它是由缩减行阶梯矩阵得到的并且A*Z=0。Colspace命令(求矩阵的列空间的基):Z=colspace(A):返回矩阵A的列空间的基,并且有size(Z,2)=rank(A)。
eig命令(求矩阵的特征值和特征矢量)E=eig(X):返回由方阵X的特征值组成的特征矢量。
[V ,D]=eig(X):返回方阵X的特征值矩阵D和特征矢量矩阵V,其中X、V、D满足XV=VD;特征值矩阵D是以X的特征值为对角线的元素生成的对对角矩阵;矩阵X的第k个特征值对应的特征矢量是矩阵D的第k列列矢量。只有这样才有XV=VD.svd命令(矩阵的奇异分解值)
S=svd(X):f返回由矩阵X的奇异值组成的矢量。jordan命令(求矩阵的约旦标准形)jordan(X):返回矩阵X的约旦标准形。[V,J]:jordan(X):除了返回矩阵X的约旦标准形J外,还给出了相似变换矩阵V,并有VA*V=J。
poly命令(求矩阵的特征多项式)
P=poly(X):若X为nxn的矩阵,则该命令返回X的特征多项式P。P为包含n+1个元素的矢量,是特征多项式的系数。Expm命令(求矩阵的指数形式)expm(X):用pade法计算ex。
一般代数方程的求解:solve(Equ):Equ为符号方程,该命令可以求Equ关于系统默认变量为自变量的符号方程的解。
solve(Equ,var):同上,但var为指定的自变量,求出的解是关于指定变量的解。solve('equ','equ',···,'equ')
[a1,a2,···,an]=solve('equ1','equ2',···,'equn','var1','var2',···,'varn')
最后两种调用格式相差无几,都是求代数方程组的解,只不过最后一种调用格式制定了自变量var1,var2,···,varn.事实上,var1,var2,···,varn可有可无,只是因为solvem命令只有当方程组的数目和自变量的数目相同时才能进行求解,并且解得的结果并不是按照solve命令括号中var1,var2,···,varn的顺序分别赋给a1,a2,··,an的,而是按照英文字母表的顺序依次赋给a1,a2,···,an。即当var1在所有变量中按字母表顺序排序时排在最后一个,那么在结果中an才是对应变量var1的解。
注意:lambertw是个函数(称为Lambert W 函数),lambertw(A)是指满足e=A这样的表达式所对应的值。
注意:当用表达式s1,s2···sn代替solve命令中的符号方程组equ1,equ2,···,equn时,就意味着所求的是以s1=0,s2=0,···,sn=0所构成的方程组的解。线性代数方程组的求解:
X=linsolve(A,B):求AX=B的解,返回X。常微分方程组的求解:
注意:Matlab中用D表示对变量求导数,Dy表示对y求一阶导数,Dny表示对y求n阶导数。因此,y''+2y'=x这一微分方程在Matlab中需描述为:D2y+2Dy=x.无初值条件的常微分方程:调用格式为:dsolve('equ')或desolve('equ','var')后者中“var”为指定变量。
有初值条件的常微分方程:dsolve('equ,''condition1,condition2,···,conditionn','var')dsolve('equ','condition1','condition2',···,'conditionn','var')求解常微分方程组:
dsolve('equ1','equ2',···,'equn','var')dsolve('equ1,equ2,···,equn','var')desolve('equ1','equ2',···,'equn','condition','condition1','condition2',···,'condition','var')desolve('equ1,equ2,···,equn','condition,condition1,condition2,···,condition','var')求解线性常微分方程组:使用这个函数: function y=dsolve(A)syms t real e=eig(A);%求变量的特征矢量。
[v,d]=eig(A);%求得A的特征值矩阵d和特征值矢量矩阵v y=exp(d*t)'*v;%求得线性齐次常微分方程组X'=AX的解。反函数和复合函数的求法:
g=finverse(f):返回值g是已知函数f的反函数(自变量由系统的默认变量确定)。若f为单符号变量(如x)的一个标量,那么g是一个涉及符号变量的标量,并且满足g(f(x))=x。
g=finverse(f,v):同上,但指定变量为v。该命令在f含有多个符号的情况下,求它关于某个变量的反函数时要比第一种调用格式显得明了了。求复合函数:
compose(f,g):返回值为f(g(y)),其中f=f(x),g=g(y)。compose(f,g,z):返回值为f(g(z)),其中f=f(x),g=g(y)compose(f,g,x,z):返回值f(g(z))且视x为f的自变量,即如果f=cos(g(z)txtxg(z)),则compose(f,g,x,z)返回值就是cos(),而compose(f,g,t,z),则返回值为cos()。
compose(f,g,x,y,z):返回值为f(g(z))且视x为f的自变量,视y为g的自变量。例如:xtyusin(zu)f=cos(),g=sin()则compose(f,g,x,y,z)返回值为cos(t),,而compose
sin(yz)(f,g,x,u,z)则返回为cos(t)。
第六章
傅立叶变换及其逆变换:
F=fourier(f):对自变量为x的表达式f(x)进行变换,返回值为F(w);当f是变量w的函数即f=f(w)时,则变量结果为F=F(t);如果变量表达式中没有t和x这两个变量,则该命令将对系统默认的变量进行傅立叶变换。
F=Fourier(f,v):指定了变量结果为变量v的函数。表现在计算过程中则公式变为:
F(v)=f(x)eivxdx。用MATLAB语言则可描述为:fourier(f,v)<=>F(v)=int(f(x)*exp(-i*v*x),x,-inf,inf)F=fourier(f,u,v):指定了要对函数表达式做关于变量u的fourier变换。对应此时的傅立叶变换公式为:F(v)逆变换:
f(u)eivudu。
f=ifourier(F):F为待进行傅立叶逆变换的代数表达式。该命令对F(w)实行傅立叶逆变换得到一个自变量为x的函数f(x)。如果F=F(x)则该命令将返回一个自变量为t的函数f(t).f=fourier(F,u)f=fourier(F,v,u)后两种调用格式中u,v的用法和fourier命令中的用法完全一致。拉普拉斯变换及其逆变换:
拉普拉斯公式:L(s)F(t)e0stdt。
L=laplace(F):F为待进行拉普拉斯变换的代数表达式,其默认变量为t,若p不含t。则针对系统默认的变量对表达式进行拉普拉斯变换,该命令返回的函数其默认自变量为s。如果F=F(s)那么该命令的返回结果为L=L(t)。该命令可用MATLAB语言描述为:Laplace(F)<=>L(s)=int(F(t)*exp(-s*t),0,inf)并且积分针对变量t进行。
L=laplace(F,t)指定返回结果L为自变量t的函数,而不是系统默认的S用MATLAB语言可以描述为:Laplace(F,t)<=>L(t)=int(F(x)*exp(-x*t),0,inf)。用公式可表示为:L(t)F(x)e0txdx。
L=laplace(F,w,z)与傅立叶变换的解是类似。
ci拉普拉斯逆变换:公式为:F(t)F=ilaplace(L)F=ilaplace(L,y)F=ilaplace(L,y,x)这些与傅立叶变换的解释类似。
L(s)ecistds
Z变换:公式为F(z)F=ztrans(f).F=ztrans(f,w)F=ztrans(f,k,w)
0f(n)zn。
和傅立叶变换解释差不多。f=iztrans(F)f=iztrans(F,k)f=iztrans(F,w,k)和傅立叶变换解释差不多.几个补充命令:
1、double(X):返回值是X的双精度型矩阵,通常在循环语句中或者判断语句中使用double命令。
2、poly2sym(C):返回值对应矢量C的多项式表达式,返回结果的默认变量是X。
Poly2sym(C,‘v’):只不过将变量X换成v.3、sym2poly(P)与2的命令功能相反:该命令返回的结果是一个行矢量,该式量的元素是多项式的系数。
4、ccode(s):返回符号表达式s的C语言编码形式。
5、sinint正弦积分函数:sinint(x)=int(sin(t)/t,t,0,x)
6、余弦积分函数cosint(x)=Gamma+log(x)+int((cos(t)-1),t,0,s).其中Gamma是欧拉常数,为:=0.577215664901···
7、zeta(z)=sum(1/k^z,k,1,inf),即计算
8、zeta(n,z)=计算zeta(z)的k阶导数。
注意:浮点运算误差较大,而符号运算结果精确。
9、r=vpa(s):按Digit可控精度计算s的值。digits(n)可设定有效数值、vpa(s,d)指定s的精度为d为有效数值。
10、创建抽象函数的格式:f=sym('f(var1,var2,var3,···)')
11、用map命令创建抽象函数:
map(fcn,expr,arg1,arg2,···,argn)
map(fcn,arg1,expr,arg2,···,argn)以上命令中,fcn:一个操作手续或者名称;expr表达式;arg1:用于操作对象。
12、调用特殊函数可用mfun('函数')来调用。
13、函数计算器的使用:在命令栏中输入funtool,打开操作器。
第一排按钮是:df/dx:求函数的导数
intf:求函数的积分
simplef:对函数f(x)化简
numf:求函数的分子部分
denf:求函数的分子部分
1/f:求函数的倒数 finv:求函数的反函数。swap:交换f和g的值。
1kz的积分。
在命令栏中输入taylor可调出泰勒计算器。
第七章符号函数图形的绘制
fplot(fun,lims,str,tol):直接绘制函数y=fun(x)的图形其中lims为一个向量,若lims只包含两个元素,则表示x轴的范围;若lims包含四个元素则前两个元素表示x轴的范围,后两个元素表示y的范围。str可以指定图形的线性和颜色。tol值小于一,代表相对误差。
fplot(fun,lims,n):用最少为n+1个点来绘制函数fun的图形。用fplot(@humps,[-1,5])来绘制函数humps的图形比较光滑,其中@humps表示以函数句柄的形式引用函数,若是直接输入函数,而不是函数名,则用单引号括起。
fplot('[tan(x),sin(x),cos(x)]',[-2*pi,2*pi])plot('sin(1/x)',[0.01 0.1],1e-3)ezplot()可绘制二元函数:
1、ezplot(f):在默认区间x(2,2),上绘制函数f(x,y)的图形。
2、ezplot(f,[a,b]):在区间x(2,2)上绘制函数图形。对于隐函数f(x,y)来说,1、ezplot(f):在默认区间x(2,2),y(2,2)上绘制函数f(x,y)的图形。
2、ezplot(f,[x1,x2,y1,y2]):在这两个区间上绘制图形f(x,y).3、Ezplot('u^2-v^2-1',[-3,2,-2,3])就是区间u(-3,2),v(-2,3)上绘制u^2-v^2-1=0的函数图象,因为变量不是x,y所以区间按字母分配。
4、ezplot(x,y):在默认区间t(0,2*pi)上绘制函数x=x(t)和函数y=y(t)的图形。
5、ezplot(x,y,[tmin,tmax]):在区间(tmin,tmax)上绘制参数函数x=x(t),y=y(t)的图形
ezpolar绘制极坐标下的图形
ezpolar(f):在默认区间theta(0,2)上绘制函数rho=f(theta)的图形,其中theta为极角,rho为极径。
ezpolar(f,[a,b]):在区间theta(a,b)上绘制函数rho=f(theta)的图形。ezplot3绘制三维空间曲线
ezplot3(x,y,z):绘制三维曲线,含参数t.ezplot3(x,y,z,[tmin,tmax]):在区间t(tmin,tmax)内绘制三维曲线。ezplot3(x,y,z,[tmin,tmax],'animate'):产生空间曲线的动画绘制效果。
第二篇:MatLab 知识小结
MatLab 知识小结
matlab常用到的永久变量。ans:计算结果的默认变量名。i j:基本虚数单位。
eps:系统的浮点(F10a9Bg个oht): inf: 无限大,例1/0 nan NaN:非数值(N航a nmnb谢)pi:圆周率n(n=3.1415926..)。realmax:系统所能表示的最大数值。realmin: 系统所能表示的最小数值,nargin: 函数的输入参数个数: nargout:函数的输出多数个数
①matlab的所有运算都定义在复数城上。对于方根问题运算只返回处于第一象限的解。
⑦matlab分别用左斜/和右来表示“左除和“右除”运算。对于标量运算而言,这两者的作用没有区别:但对于矩阵运算来说,二者将产生不同的结果。
多项式的表示方法和运算
p(x)=x^3-3x-5 可以表示为p=[1 0 –3 5],求x=5时的值用plotval(p,5)也可以求向量:a=[3 4 5],plotval(p,a)函数roots求多项式的根 roots(p)p=[1 0-3 5];r=roots(p)由根重组多项式poly(根)q=poly(r)
real(q)有时会产生虚根,这时用real抽取实根即可
conv(a,b)函数 多项式乘法(执行两个数组的卷积)a=[1 2 3 4];b=[1 4 9 16];c=conv(a,b)多项式的加减法,低阶的多项式必须用首零填补,使其与高阶多项式有同样的阶次
多项式除法 [q , r]=deconv(c , b)表示b/c q为商多项式,r为余数 多项式的导数 polyder(f)f=[ 2 4 5 6 2 1];s=polyder(f)
多项式的曲线拟合
x=[1 2 3 4 5];
y=[5.6 40 150 250 498.9];
p=polyfit(x,y,n)数据的n次多项式拟合 poly:矩阵的特征多项式、根集对应的多项式
x2=1:0.1:5;n取1时,即为最小二乘法
y2=polyval(p,x2);计算多项式的值(polyvalm计算矩阵多项式)plot(x,y,'*',x2,y2);grid on 最小二乘法 x=[1 2 3 4 5];
y=[5.6 40 150 250 498.9];plot(x,y,’*’),lsline
多项式插值(p158)
YI=interp1(x,y,XI,’method’)一维插值
(XI为插值点的自变量坐标向量,可以为数组或单个数。
method为选择插值算法的方法,包括:
linear(线性插值)cubic(立方插值)spline(三次样条插值)nearst(最近临插值)
例如:人口预测 year=1900:10:1900;
number=[78 91 105 „.每十年的人口数];
x=1900:1:2000;
y=interp1(year,number,x,’spline’);plot(year,numeber,’*’,x,y);grid on
一维博里叶变换插值使用函数interpft实现,计算含有周期函数值的矢量的傅里叶变换
然后使用更多的点进行傅里叶变换的逆变换,函数的使用格式如下:y=interpft(x,n)其中x是含有周期函数值的矢量,并为等距的点,n为返同等间距点的个数。
求解一元函数的最小值
y=fminbnd('humps',0.3,1)humps为一内置函数
求解多元函数的最小值
函数fminserch用于求多元函数的最小值。它可以指定一个开始的矢量,并非指定一个区间。此函数返回一个矢量为此多元函数局部最小函数值对应的自变量
纹理成图功能
由warp函数的纹理成图功能实现平面图像在空间三维曲面上的显示。将文件名为flowers.tif的图像分别投影到圆柱形和球星表面上 i=imread('flowers.tif');[x,y,z]=cylinder;
subplot(1,2,1),warp(x,y,z,i);[x,y,z]=sphere(50);subplot(1,2,2),warp(x,y,z,i);warp(x,y,z,i);
求函数的零点
求函数humps在[1,2]区间上的零点 fzero(‘humps’,[1,2]);
也可以给一个初始值 fzero(‘humps’,0.9);
对于多项式可直接由roots求其根 roots(‘4*x^3+……’);也可以用solve c=sym('c','real');x=sym('x','real');s=solve(x^3-x+c)
函数定积分
q=quadl(‘humps’,0,1)求humps函数在0 1区间上的定积分,也可以用quad语句
二重积分 首先计算内积分,然后借助内积分的中间结果再求出二重积分的值,类似于积分中的分步积分法。Result=dblquad(‘integrnd’,xin,xmax.,ymin,ymax)integrnd为被积函数的名称字符串
符号积分运算int(f)最精确的是符号积分法 计算s=∫12[∫01xydx]dy syms x y 中间为空格,不能为逗号 s=int(int(‘x^y’,’x’,0,1),’y’,1,2)引号可省略 vpa(s)显示s的值 内积分限为函数的二重积分 I=∫14[∫√y2(x2+y2)dx]dy 符号法I=vpa(int(int(‘x^2+y^2’,’x’,sqrt(y),2),’y’,1,4)
微分运算(diff)
微分是描述一个函数在一点处的斜率,是函数的微观性质、因此积分对函数的形状在小范围内的改变不敏感,而微分很敏感。—个函数的小的变化,容易产生相邻点的斜率的大的改变。由干微分这个固有的困难.所以尽可能避免数值微分.特别是对实验获得的数据进行微分。在这种情况,最好用最小二乘曲线拟合这种数据,然后对所得到的多项式进行微分;或用另一种方法对点数据进行三次样条拟合,然后寻找样条微分,但是,有时微分运算是不能避免的,在MATLAB中.用函数diff汁算一个矢量或者矩阵的微分(也可以理解为差分)。a=[1 2 3 3 3 7 8 9];b=diff(a)一次微分 bb=diff(a,2)二次微分 实际上diff(a)=[a(2)-a(1),a(3)-a(2),„„,a(n)-a(n-1)] 对于求矩阵的微分,即为求各列矢量的微分,从矢量的微分值可以判断矢量的单调性、是否等间距以及是否有重复的元素。符号微分运算(diff)syms x t a f =cos(a*x)df =diff(f)由findsym的规则,隐式的指定对x进行微分
dfa=diff(f,'a')指定对变量a进行微分 dfa=diff(f,'a',3)三次微分
diff函数不仅作用在标量上,还可以在矩阵上,运算规则就是按矩阵的元素分别进行微分 syms a x A=[cos(a*x),sin(a*x),-sin(a*x),cos(a*x)];dA=diff(A)微分方程dsolve
在matlab中,符号表达式中包含字母D用来表示微分运算,D2,D3分别对应第二,第三阶导数,D2y表示d2y/dt2 把t缺省了
y=dsolve(‘Dy=f(y)’)单个方程,单个输出
[u,v]=dsolve(‘Du=f(u,v)’,’Dv=g(u,v)’)2个方程,2个输出
s=dsolve(‘Dx=f(x,y,z)’,’Dy=g(x,y,z)’,’Dz=k(x,y,z)’)
s.x s.y s.z 3个方程,架构数组
dsolve('Dx=-a*x')结果:C1*exp(-a*t)没给定初值,所以结果中含参变量 x=dsolve('Dx=-a*x','x(0)=1','s')结果exp(-a*s)给定了初值,独立变量设为s
计算多元函数的梯度
fx=gradient(f)f是一个矢量返回f的一维数值梯度,fx对应于x方向的微分。
[x,y]=meshgrid(-2:.2:2,-2:.2:2);z=x.*exp(-x.^2-y.^2);[px,py]=gradient(z,.2,.2);contour(z),hold on 画等值线 quiver(px,py)
matlab字符串运算 利用sym命令创建表达式
f=sym(‘cos(x)+sin(x)’)或 syms x , f=cos(x)+sin(x)diff(f)求其导数(也
可
直
接
用
命
令
f=diff(‘cos(x)+cos(y)’)
当字符表达式中含有多于一个的变量时,只有—个变量是独立变量。如果不告诉matlab哪一个变量是独立变量,则可以通过findsym命令询问 利用findsym命令查询独立变量 f=sym('sin(a*x)+b')
findsym(f,1)给出独立变量(一个变量,如果为2则给出2个变量)findsym(f)给出所有变量
符号表达式的化简和替换
collect函数 collect(f,v)表示将f表示为关于符号变量v的多项式形式,即关于v合并同类项,v缺省,则用findsym确定的缺省变量 syms x y
f=x^2*y+y*x-x^2-2*x+1 collect(f)得到(-1+y)*x^2+(y-2)*x+1 collect(f,y)
得
到
(x+x^2)*y+1-x^2-2*x
expand函数 expand(f)将f展开,写成和的形式 syms x
expand((x-1)^3)得
到
x^3-3*x^2+3*x-1
horner函数 horner(f)将f写成镶嵌套形式 syms x
horner(x^3-6*x^2)得
到
(-6+x)*x^2
factor函数 factor(f)将f转换成低阶有理多项式的乘积 syms x
f=x^3-6*x^2+11*x-6
factor(f)得到(x-1)*(x-2)*(x-3)simplify(f)函数 综合化简 simple(f)函数的最简形式 syms x
f=2*sin(x^2)+cos(3*x)
simple(f)如果不想看到中间过程,可z=simple(f)有时使用两次simple命令可以得到最简式
如果想知道哪个简化命令得到最后结果,可以加一个参数how [z,how]=simple(f)
符号表达式的替换 subs(f,new,old)f='a*x^2+b*x+c'
subs(f,'t','x')得到a*(t)^2+b*(t)+c subs是一个符号函数,返回一个符号变量
subexpr函数 有时matlab返回的符号表达式难以理解,用subexpr函数,可以将表达式中重复出现的子式用一个符号表示,从而简化表达形式 c=sym('c','real');x=sym('x','real');s=solve(x^3-x+c)a=subexpr(s)
得到
sigma
=
-108*c+12*(-12+81*c^2)^(1/2)a =
[ 1/6*sigma^(1/3)+2/sigma^(1/3)] [-1/12*sigma^(1/3)-1/sigma^(1/3)+1/2*i*3^(1/2)*(1/6*sigma^(1/3)-2/sigma^(1/3))] [-1/12*sigma^(1/3)-1/sigma^(1/3)-1/2*i*3^(1/2)*(1/6*sigma^(1/3)-2/sigma^(1/3))]
pretty函数有时也能起到同样的作用。Pretty(f)显示函数的习惯书写形式
线性方程组的求解
求解线性方程组,用反斜杠 a=hilb(3)b=[1 2 3]' ab
矩阵的特征值和特征向量
用eig(v,d)函数,[v,d]=eig(A);其中d将返回特征值,v返回相应的特征向量,缺省第二个参数将只返回特征值 syms a b c real A=[a b c;b c a;c a b];[v,d]=eig(A);
为了观察更清楚,使用以前学过的替换函数,这里不用默认的sigma,而改用M,显式的代替繁琐的表达子式 vv=subexpr(v);vs=subs(vv,'m','sigma')运行结果为
vs = [ 1, 1, 1] [-(c+(m)-a)/(c-b),-(c-(m)-a)/(c-b), 1] [-(a-(m)-b)/(c-b),-(a+(m)-b)/(c-b), 1]
再用m替换d中的表达子式 dd=subexpr(d);ds=subs(dd,’m’,’sigma’)运行结果为ds =
[(m), 0, 0] [ 0,-(m), 0] [ 0, 0, c+a+b] note 求特征值也可用以下命令
f=poly(A)poly函数 用来求A的特征多项式
d=solve(f)solve(f)函数用来求多项式的解
svd()函数 求矩阵的奇异值分解,将矩阵分解为两个正交矩阵和对角矩阵的乘积 a=sym(hilb(2))[u,s,v]=svd(a)
代数方程和方程组
代数方程的求解可用solve(f)命令,如果f不含=,matlab将给表达式置零。方程的未知量在默认的情况下由findsym决定或显式指出 syms a b c x
solve(a*x^2+b*x+c)以x为默认变量
solve(a*x^2+b*x+c,a)指定对a为变量
求含有等号的方程的解(一定要加单引号)
f=solve(‘cos(x)=sin(x)’)
x=solve('exp(x)=tan(x)')如果不能求得符号解,就计算可变精度解。求解方程组与单方程类似 解一个三元一次方程
v=solve('a*u^2+v^2','u-v=1','a^2-5*a+6')结果为v =
a: [4x1 sym] u: [4x1 sym] v: [4x1 sym]
一些常用的符号运算 极限运算limit
limit(f)求x到0的极限
limit(f,x,a)或limit(f,a)求x到a的极限
limit(f,a,’left’)limit(f,a,’right’)求x到a的左极限和右极限 limit(f,inf)求x趋于无穷的极限 符号求和symsum(s)
symsum(s)以默认的findsym决定的变量求和
symsum(s,v)以s中指定的变量v求和
symsum(s,a,b)symsum(s,v,a,b)从a到b的有限项求和
syms k n
symsum(k)从0到k求和
symsum(k,0,n-1)从0到n-1求和 symsum(1/k^2,1,inf)无限项求和 泰勒级数taylor(f)
taylor(f)表示求f的5阶talor展开,可以增加参数指定展开的阶数(默认式5),也可以对于多元函数指定展开的变量,还可以指定在哪个点展开 syms x t taylor(exp(-x))
taylor(log(x),6,1)在1点的6阶taylor展开
taylor(x^t,3,t)对t的3阶taylor展开 积分变换
fourier变换和逆变换fourier(f)fourier分析可以将信号转换为不同频率的正弦曲线。可对离散数据进行分析,也可对连续时间系统进行分析,特别在信号和图形处理领域。离散变换(DFT)作用于有限数据的采集,最有效的是快速fourier变换(FFT)F=fourier(f)独立变量x,返回关于参数w的函数
F=fourier(f,v)返回函数F关于符号对象v的函数
F=fourier(f,u,v)对关于u的函数f进行变换,而不是缺省的w,返回函数F是关于v的函数 syms t v w x fourier(1/t)
fourier(exp(-t)*sym('Heaviside(t)'),v)fourier(diff(sym('F(x)')),x,w)Fourier逆变换
f=ifourier(F)缺省独立变量w,返回关于x的函数对w进行积分 f=ifourier(F,v)返回函数f是关于符号对象v的函数,而不是缺省的x f=ifourier(F,u,v)是关于u的函数f进行变换,而不是缺省的x,返回函数f是关于v的函数
Laplace变换和逆变换laplace(f)应用于连续系统(微分方程)中,可以用来求解微分方程的初值问题 laplace(F)缺省独立变量t,缺省返回关于s的函数L
laplace(F,t)返回关于t的函数L,而不是缺省的s
laplace(F,w,z)对函数F的自变量w积分,返回关于z的函数L 逆变换
F=ilaplace(L)缺省独立变量s,返回关于t的函数F F=ilaplace(L,y)返回关于y的函数F,而不是缺省的t F=ilaplace(L,y,x)对函数L的自变量y积分,返回关于x的函数F Z-变换和逆变换ztrans(f)标量符号f的Z-变换
F=ztrans(f)缺省独立变量n,返回关于z的函数
F=ztrans(f,w)返回关于符号变量w的函数F,而不是缺省的z F=ztrans(f,k,w)关于k的符号变量作Z-变换返回关于符号变量w的函数 逆变换iztrans(F)f=iztrans(F)或(F,k)或(F,w,k)
符号绘图函数
符号函数简易绘图函数ezplot(f)f可以包含单个符号变量x的字符串或表达式,默认画图区间(-2pi,2pi),如果f包含x和y,画出的图像是f(x,y)=0的图像,缺省区间是-2pi syms x t ezplot('t*cos(t)','t*sin(t)',[0,4*pi])绘制符号图像函数fplot(fun,lims,tol,’linespec’,n)其中lims=[xmin,xmax]或[xmin,xmax,ymin,ymax] tol为指定相对误差,默认0.001 ‘linespec’指定绘图的线型 n指定最少以n+1个点绘图 [x,y]=fplot(fun,lims,…)只返回用来绘图的点,并不绘图,可以自己调用plot(x,y)来绘制图形。syms x subplot(2,2,1),fplot('humps',[0,1])f='abs(exp(x*(0:9))*ones(10,1))' subplot(2,2,2),fplot(f,[0,2*pi])subplot(2,2,3),fplot('sin(1./x)',[0.01,0.1],1e-3)matlab绘图 二维图形的绘制 plot 在(x,y)坐标下绘制二维图像 支持多个x-y二元结构 plot3 在(x,y,z)坐标下绘制三维图形 loglog 在(x,y)对数坐标下绘制二维图形 semilogx 在x为对数坐标,y为线性坐标的二维坐标中绘图 semilogy 在x为线性坐标,y为对数坐标的二维坐标中绘图 plotyy 在有两个y轴的坐标下绘图 plot用法 plot(x,y,'--rs','linewidth',2,'markeredgecolor','k',...'markerfacecolor','g','markersize',10)plotyy用法 plotyy(x1,y1,x2,y2)以x1为标准,左轴为y轴绘制y1向量,x2为基准,右轴为y轴,绘制y2向量 plotyy(x1,y1,x2,y2,fun)用字符串fun指 定的绘 图 函 数 (plot ,semilogx,semilogy,loglog,stem)plotyy((x1,y1,x2,y2,fun1,fun2)t=0:pi/20:2*pi;y=exp(sin(t)); plotyy(t,y,t,y,'plot','stem')stem为二维杆图 [ax,h1,h2]=plotyy(„)返回左右两y轴的句柄(分别为ax(1)ax(2),以及在两坐标轴中生成的图形对象的句柄,分别为h1 h2 t=0:900;A=1000;a=0.005;b=0.005;z2=cos(b*t);z1=A*exp(-a*t); [haxes,hline1,hline2]=plotyy(t,z1,t,z2,'semilogy','plot');axes(haxes(1)) ylabel('semilog plot')对数坐标 axes(haxes(2))ylabel('linear plot')set(hline2,'linestyle','--')其他二维图形绘图指令 bar(x,y)二维条形图 hist(y,n)直方图 histfit(y,n)带拟和线的直方图,n为 直方的个数 stem(x,y)火柴杆图 comet(x,y)彗星状轨迹图 compass(x,y)罗盘图 errorbar(x,y,l,u)误差限图 feather(x,y)羽毛状图 fill(x,y,’r’)二维填充函数 以红色填充 pie(x)饼图 polar(t,r)极坐标图 r为幅值向量,t为角度向量 t=0:0.1:8*pi;r=cos(3*t/2)+1/2; polar(t,r),xlabel('polar 指令')quiver(x,y)磁力线图 stairs(x,y)阶梯图 loglog(x,y)对数图 semilogx semilogy 半对数图 matlab三维作图 plot3(x,y,z)三维线条图 t=0:pi/50:15*pi; plot3(sin(t),cos(t),t,'r*')与plot相似 v=axis 返回各个轴的范围 text(0,0,0,'origin')在某个坐标点加入文字 plot3 增加维数可以一次画多个图,使所个二维图形眼一个轴排列 三维网线图的绘制 mesh(x,y,z)网格图 mesh(x,y,z,c)四维作图,(x,y,z)代表空间三维,c代表颜色维 mesh(…,’property name’,property value,…)设置曲面各属性的值 [x,y,z]=sphere(12); mesh(x,y,z),hidden off 曲面设置为透明 meshc(x,y,z)画网格图和基本的等值线图 meshz(x,y,z)画包含零平面的网格图 waterfall(x,y,z)与mesh一样,只是在效果上它的网格线只在x轴一个方向出现,呈瀑布状水线 两个变量的标量指令meshgrid(x)或meshgrid(x,y)(p179) 将两个一维向量生成两个二维向量,以便进行z=f(x,y)运算,算出z的所有值,z为x y的标量指令 [X,Y]=meshgrid(x)meshgrid(x,x)的简略式 [X,Y]=meshgrid(x,y)[X,Y,Z]=meshgrid(x,y,z)用于三维图形的绘制 [x,y]=meshgrid([-2:0.1:2]);z=x.*exp(-x.^2-y.^2);plot3(x,y,z)surf(x,y,z,c)着色表面图 surf(x,y,z)隐含着c=z surf(z)隐含着x,y的值为surf指令根据z的尺寸自动生成 surfc 画出具有基本等值线的曲面图 surfl 画出一个具有亮度的曲面图 shading flat 网线图的某整条线段或曲面图的某个贴片都着一种颜色 shading interp 某一线段或贴片上各点的颜色由线或片的顶端颜色经线性插值而得 曲面图不能设成网格图那样透明,但需要时,可以在孔洞处将数据设成nun 等高线的绘制 在二维空间绘制等高线contour contour(x,y,z,n)绘制n条等值线(n可省略) contour(x,y,z,v)在向量v所指定的高度上绘制等高线(可省) c=contour(x,y,z)计算等值线的高度值 c=contourc(x,y,z,n)计算n条等高线的x-y坐标数据 c=contourc(x,y,z,v)计算向量v所指定的等高线的x-y坐标数据 clabel(c)给c阵所表示的等高线加注高度标识 clabel(c,v)给向量v所指定的等高线加注高度标识 clabel(c,’manual’)借助鼠标给点中的等高线加注高度标识 三维空间绘制等高线contour3(x,y,z)[x,y,z]=peaks(30);contour3(x,y,z,16,'g')二元函数的伪彩图pcolor(x,y,z)是指令surf的二维等效指令,代表伪彩色,可与contour单色等值线结合画彩色等值线图 [x,y,z]=peaks(30); pcolor(x,y,z);伪彩色 shading interp 颜色插值,使颜色平均渐变 hold on,contour(x,y,z,20,'k')...画等值线 colorbar('horiz')水平颜色标尺 c=contour(x,y,z,8);clabel(c)标注等高线 矢量场图(速度图)quiver 用于描述函数z=f(x,y)在点(x,y)的梯度大小和方向 [X,Y]=meshgrid(x,y)X,Y为Z阵元素的坐标矩阵 [U,V]=gradient(Z,dx,dy)U,V分别为Z对x对y的导数,dx dy是x y方向上的计算步长 quiver(X,Y,U,V,s,’linespec’,’filled’)U,V为必选项,决定矢量场图中各矢量的大小和方向,s为指定所画箭头的大小,缺省时取1,linespec为字符串,指定合法的线形和彩色,filled用于填充定义的绘图标识符 [x,y]=meshgrid(-2:.2:2,-1:.15:1);z=x.*exp(-y.^2); [px,py]=gradient(z,.2,.15);contour(x,y,z); hold on,quiver(x,y,px,py),axis image 多边形的填色fill(x,y,c) c定义颜色字符串,可以是’r’,’b’等,也可以用RGB三色表示[r,g,b]值为0-1 图形的四维表现 班级: 学号: 姓名: Matlab学习综述 MATLAB是一种科学计算软件,专门以矩阵的形式处理数据。MATLAB将高性能的数值计算和强大的数据可视化功能集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作,而且利用MATLAB产品的开放式结构,可以非常容易地对MATLAB的功能进行扩充。 MATLAB产品由若干个模块组成,不同的模块完成不同的功能,其中主要的核心模块有MATLAB、MATLAB Toolboxex、MATLAB Compiler Simulink、Simulink Blocksets、Real-time Workshop(RTW)Stateflow。这些产品大体上可以分为以MATLAB为基础的产品和以Simulink为基础的产品两大分支。其中,MATLAB是MATLAB产品家族的基础,任何其他MATLAB产品产品都以这个模块为基础。MATLAB的桌面应用程序开发工具是以MATLAB Compiler为核心的一组编译工具。Simulink是基于MATLAB的框图设计环境,可以用来对各种动态系统进行建模,分析和仿真,它的建模范围广泛,可以针对任何能够用数字来描述的系统进行建模。 一种完整的计算机应用语言应该提供对数据的描述和对数据的操作。在M语言中,最常用的数据类型表现手段和形式就是变量和常量,由于MATLAB软件自身的特点,它是一种以数值计算为基础的软件,因此M语言的基本处理单位是数值矩阵或者数值向量,在M语言中统一将矩阵或者向量称之为数组,因此掌握一些基本的矩阵、向量和数组操作的基本知识就成为了掌握MATLAB软件的基础。变量和常量是编程语言中类型的表现手段和形式,掌握变量和常量的概念也是掌握M语言编程的基础。所谓变量,就是指在程序运行中需要改变数值的量,每一个变量都具有一个名字,变量将在内存中占据一定的空间,以在程序运行的过程中保存其数值,对变量的命名有相应的要求:变量必须以字母开头,后面可以是字母、数字或者下划线之间的组合。所谓常量就是在程序运行的过程中不需要改变数值的量。 MATLAB专门以矩阵作为基本的运算单位,首先要掌握向量、矩阵、索引和多维数组的概念,以及在MATLAB环境下创建向量、矩阵和多维数组的方法,以及操作矩阵和多维数值的函数的使用方法。 目前的MATLAB版本中不仅有多达十几种的基本数据类型。在不同的专业工具箱中还有特殊的数据类型,并且MATLAB还支持面向对象的编程技术,支持用户自定义的数据类型。获取MATLAB的数据类型可以在MATLAB命令行窗体中键入help datatypes。MATLAB的数据类型包括基本的数值类型,逻辑类型数据、元胞数值、结构和字符串等,需要指出一点,MATLAB的基本数据是双精度数据类型和字符类型。MATLAB提供了完整的编写应用程序的功能,这种能力被称为M语言的高级语言来实现。这种语言是一种解释性语言,利用该语言编写的代码仅能被MATLAB接受,被MATLAB解释执行。其实,一个M语言文件就是由若干MATLAB的命令组合在一起构成的,和C语言类似。M语言文件都是标准的纯文本格式的文件,其文件的扩展名为.m。MATLAB的函数主要有两类,一类被称为内建函数,这类函数是由MATLAB的内核提供的,能够完成基本的运算,例如三角函数、矩阵运算函数等。另外一类函数就是利用高级语言开发的函数文件,这里的函数文件包括用C/FORTRAN语言开发的MEX函数文件,也包括了M函数文件。 M语言文件可以分为两类,其中一类是脚本文件,另一类是函数文件,脚本文件是最简单的一种M语言文件。所谓脚本文件就是由一系列的M语言文件指令和命令组成的纯文本格式的M文件,执行脚本文件时,文件中的指令或者命令按照出现在脚本文件中的顺序依次执行。脚本文件没有输入参数,也没有输出参数,脚本文件处理的数据或者变量必须在MATLAB的公共工作空间中,脚本文件主要是由注视行和代码行组成。 函数文件是M文件最重要的组成部分,M语言函数文件能够接受用户的输入参数,并进行计算,然后将计算结果作为函数的返回值返回给调用者,M函数文件和脚本文件不同,函数文件不仅有自己特殊的文件格式,而且不同的函数还分别具有自己的工作空间,函数文件的输/输出参数不同,这些输入/输出参数在定义的时候不需要指出变量的类型,因为MATLAB默认这些参数都使用双精度类型,这样可以简化程序的编写。M语言的函数文件不仅可以有一个输入参数和一个返回值,还可以为M语言函数文件定义多个输入参数和多个输出参数,同一个M函数文件中可以包含多个函数。如果在同一个M函数文件中包含了多个函数,那么将出现在文件中的第一个M函数称为主函数,其余的函数称为子函数。 经过这么一段时间的学习,对MATLAB有了初步的认识。但是关于它还有很多知识我们所不知道,还有待进一步的学习。以上内容是我对这学期所学课程的总结,可能有些地方总结的不够到位,因为有些地方学习的不够深入,所以,以后要更加努力,在MATLAB的学习上多花一些时间,为以后的学习和工作打下基础。 目录 一、Matlab相关说明.....................................................................2 二、Matlab操作注意事项..............................................................2 三、Matlab常用代码(图像处理相关)......................................5 四、Matlab常用快捷键.................................................................7 五、Matlab学习心得.....................................................................8 一、Matlab相关说明 Matlab是“Matrix Laboratory”的缩写,意为“矩阵实验室”。MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。 我所使用的Matlab版本是2012a,下文所涉及到图片、专业术语等都是以此版本为基础。 二、Matlab操作注意事项 1.打开并运行一个现存的m文件且这个m文件运行时需用到同一级文件夹中的其他文件,会出现如下提示框: 选择变更文件夹,将当前文件夹变更为这个m文件所在的文件夹。 2.不小心点错或关闭了各种小窗口,将Matlab恢复成默认布局 点击桌面—桌面布局—默认 3.查看某个函数的用法 在命令窗口输入该变量的名称,回车即可。 4.查找某个函数的用法 在命令窗口输入help+函数的名称,回车后会自动显示该函数的相关信息。 5.运行文件后报错 如下图所示,命令窗口中报错的第一段是错误的原因,后面几段会显示发生错误的文件夹以及在该文件夹中的位置。 点击文件的名称,会跳转出一个提示框,上面显示了该文件的具体实现功能,如下图所示。点击文件名后面的行标号,可以直接跳转到发生错误的那一行。 6.如何编辑界面? 修改如图所示的fig文件 1.新建一个GUI文件 2.选择打开现存的GUI文件,点击Open,就可以对当前界面进行编辑了。 7.如何将MAtlab中默认的current folder修改为自己想要的路径,每次启动后都默认是自己 设定的这个路径? >>右键matlab 快捷方式,属性-快捷方式-起始位置 填入你自己的工作目录。8.把图复制到WORD文件的方法:电机EDIT—>Copy Figure—>Ctrl+V 9.输入时,标点必须是英文状态下的 10.大多数情况下,matlab对空格不予处理 11.小括号代表运算级别,中括号用于生成矩阵,大括号用于构成单元数组 12.分号;的作用:不显示运算结果,但对图形窗口不起作用。分号也用于区分行,13.逗号,的作用:函数参数分隔符,也用于区分行,显示运算结果,当然不加标点也显示运算结果 14.冒号:多用于数组 15.续行号...不能放在等号后面使用,不能放在变量名中间使用,起作用时默认显蓝色 16.双引号'string'是字符串的标识符 17.感叹号!用于调用操作系统运算 18.百分号%是注释号,百分号后面直到行末的语句matlab跳过执行.另外还有一个块注释,即对多行一次注释,会使用到,格式为(注意%{ 和%}都要单独成行)%{ %} 19.矩阵中用圆括号表示下标,单元数组用大括号表示下标 20.对变量名的基本要求:区分大小写,不超过63个字符,以字母开头,只能是字母,数字和下划线 三、Matlab常用代码(图像处理相关) 1.创建一个文件夹 mkdir('D:myData');2.将图片保存到指定的文件夹 image_source=strcat('result',num2str(loop),'.jpg');imwrite(F.cdata,image_source);3.将电影转成图片序列 fnum=size(mov,2);%读取电影的祯数 for i=1:fnum strtemp=strcat('C:UsersAdministratorDesktopparticalfiltermyself粒子滤波',int2str(i),'.jpg');%将每祯转成jpg的图片 imwrite(mov(i).cdata,strtemp,'jpg');end 4、模拟噪声生成函数和预定义滤波器 ① imnoise:用于对图像生成模拟噪声,如: i=imread('104_8.tif');j=imnoise(i,'gaussian',0,0.02);%模拟高斯噪声 ② fspecial:用于产生预定义滤波器,如: h=fspecial('sobel');%sobel水平边缘增强滤波器 h=fspecial('gaussian');%高斯低通滤波器 h=fspecial('laplacian');%拉普拉斯滤波器 h=fspecial('log');%高斯拉普拉斯(LoG)滤波器 h=fspecial('average');%均值滤波器 5、图像文件I/O函数命令 imfinfo 返回图形图像文件信息 语法:info=imfinfo(filename,fmt)info=imfinfo(filename)imread 从图像文件中读取(载入)图像 语法:A=imread(filename,fmt)[X,map]=imread(filename,fmt)[...]=imread(filename)[...]=imread(URL,...)[...]=imread(...,idx)(CUR,ICO,and TIFF only)[...]=imread(...,'frames',idx)(GIF only)[...]=imread(...,ref)(HDF only)[...]=imread(...,'BackgroundColor',BG)(PNG only)[A,map,alpha] =imread(...)(ICO,CUR,PNG only)imwrite 把图像写入(保存)图像文件中 语法:imwrite(A,filename,fmt)imwrite(X,map,filename,fmt)imwrite(...,filename)imwite(...,Param1,Val1,Param2,Val2...)imcrop 剪切图像 语法:I2=imcrop(I)X2=imcrop(X,map)RGB2=imcrop(RGB)I2=imcrop(I,rect)X2=imcrop(RGB,rect)[...]=imcrop(x,y,...)[A,rect]=imcrop(...)[x,y,A,rect]=imcrop(...) 6.impixel 确定像素颜色值 语法:P=impixel(I)P=impixel(X,map)P=impixel(RGB)P=impixel(I,c,r)P=impixel(X,map,c,r)P=impixel(RGB,c,r)[c,r,P]=impixel(...)P=impixel(x,y,I,xi,yi)P=impixel(x,y,RGB,xi,yi)P=impixel(x,y,X,map,xi,yi)[xi,yi,P]=impixel(x,y,...) 7.二进制图像操作函数 applylut 在二进制图像中利用lookup表进行行边沿操作 语法:A=applylut(BW,LUT)bwarea 计算二进制图像对象的面积 语法:total=bwarea(BW)bweuler 计算二进制图像的欧拉数 语法:eul=bweuler(BW) 8.颜色空间转换函数 hsv2rgb 转换HSV值为RGB颜色空间:M=hsv2rgb(H)ntsc2rgb 转换NTSC值为RGB颜色空间:rgbmap=ntsc2rgb(yiqmap)RGB=ntsc2rgb(YIQ)rgb2hsv 转换RGB值为HSV颜色空间:cmap=rgb2hsv(M)rgb2ntsc 转换RGB值为NTSC颜色空间:yiqmap=rgb2ntsc(rgbmap)YIQ=rgb2ntsc(RGB)rgb2ycbcr 转换RGB值为YCbCr颜色空间:ycbcrmap=rgb2ycbcr(rgbmap)YCBCR=rgb2ycbcr(RGB)ycbcr2rgb 转化YCbCr值为RGB颜色空间:rgbmap=ycbcr2rgb(ycbcrmap)RGB=ycbcr2rgb(YCBCR) 9.类型转换函数 im2bw 转换图像为二进制图像 语法:BW=im2bw(I,level)BW=im2bw(X,map,level)BW=im2bw(RGB,level)im2double 转换图像矩阵为双精度型 语法:I2=im2double(I1)RGB2=im2double(RGB1)I=im2double(BW)X2=im2double(X1,'indexed')double 转换数据为双精度型 语法:double(X)unit8、unit16转换数据为8位、16位无符号整型: i=unit8(x)i=unit16(x)im2unit8 转换图像阵列为8位无符号整型 语法:I2=im2unit8(I1)RGB2=im2unit8(RGB1)I=im2unit8(BW)X2=im2unit8(X1,'indexed')im2unit16 转换图像阵列为16位无符号整型 语法:I2=im2unit16(I1)RGB2=im2unit16(RGB1)I=im2unit16(BW)X2=im2unit16(X1,'indexed') 四、Matlab常用快捷键 1.在命令窗口(Command Window)中: 1)【上、下键】――切换到之前、之后的命令,可以重复按多次来达到你想要的命令 2)clc――清除命令窗口显示的语句,此命令并不清空当前工作区的变量,仅仅是把屏幕上显示出来的语句清除掉 3)clear――这个才是清空当前工作区的变量命令,常用语句clear all来完成 4)【Tab】键――在command窗口,输入一个命令的前几个字符,然后按tab键,会弹出前面含这几个字符的所有命令,找到你要的命令,回车,就可以自动完成。目前讨论结果是:matlab6.5版本中,如果候选命令超过100个,则不显示。而在matlab7以后版本中,则没有这个限制,均可正常提示 5)【Ctrl+C】(或【Ctrl+Break】)――在matlab程序运行过程中,可能由于程序编写的失误,导致程序不停的运行,在命令窗口输入“Ctrl+C”可以将运行的程序停下来,而不需要将整个Matlab程序关掉。不过进行此操作的前提是能够激活切换到命令窗口才行。6)edit+函数名 查看或编辑源文件 7)who 显示当前变量名列表 8)whos 显示变量详细列表 9)which+函数名 证实该函数是否在当前路径 10)what 列出当前路径的所有matlab文件 11)load 加载外部文件 12)save 保存文件到外部 13)20.matlab的帮助函数: 14)help 15)help+函数名或help+函数类名 精确查询 16)helpwin 打开帮助窗口 17)helpwin+函数名 精确查询 18)helpdesk 打开帮助窗口 19)doc 打开帮助窗口 20)doc+函数名 打开帮助窗口,精确查询 21)lookfor+关键字 这个是matlab中的谷歌,模糊查询 2.在编辑器(Editor)中: 1)【Tab】(或【Ctrl+]】)――增加缩进(对多行有效)2)3)4)5)6)【Ctrl+[】--减少缩进(对多行有效) 【Ctrl+I】--自动缩进(即自动排版,对多行有效)【Ctrl+R】――注释(对多行有效)【Ctrl+T】――去掉注释(对多行有效) 【Ctrl+B】――括号配对检查(对版本6.5有效,但版本7.0无效,不知道是取消了还是换了另外的快捷键,请大牛们指点,其他版本没有测试过)7)【F12】――设置或取消断点 8)【F5】――运行程序 五、Matlab学习心得 接触Matlab一个多月,从刚开始连最基本的操作都不会,到现在能够熟练地运用Matlab解决问题。虽然现在学到的也只是皮毛而已,离精通还相差甚远,但至少为以后研究生期间的学习打下了良好的基础。下面我就简单的谈一下这一个月来的学习感想。 首先,想要学好Matlab必须有一定数学基础。Matlab软件是与高等数学,计算机科学相结合的软件。所以,当你学习Matlab时,你也得会一定的数学。你要尽量多的熟悉matlab自带的函数,及其作用,因为matlab的自带函数特别多,基本上能够满足一般的数据和矩阵的计算,所以基本上不用你自己编函数。这一点对你的程序非常有帮助,可以使你的程序简单,运行效率高,可以节省很多时间。 其次,要注重基础知识于实际操作结合。你把基本的知识看过之后,就需要找一个实际的程序来动手编一下,不要等所有的知识都学好之后再去编程,你要在编程的过程中学习,程序需要什么知识再去补充。在遇到问题时,不要光看别人如果解决,也不要光想怎么解决,自己坐下来,动手自己解决一下,那你就会把不是你的知识变成自己的知识。 最后,也是最重要的一点就是坚持。MATLAB涉及的领域太多,每个领域里面都缺乏足够的专家分布在你周围。那么我们很难有机会接触到真正的高手,对我们的技术细节一一指点。在遇到实际问题时,就只能靠自己去摸索。常常是再坚持一两个小时,就能够解决你的问题。最大的成就感,就在付出了极大的心血和耐心,才取得一个艰难的小胜利。 学Matlab有感 姓名:王鸿栋 学号:20090286 班级: 03310901 我对于计算机编程接触的比较晚,也没有特别大的兴趣。不过对于Matlab这门课我还是很喜欢的。一是这个语言可以变出程序绘出函数的图形,这就使得这个语言可以被“看见”,感觉比较亲切,不是那么缥缈空虚的东西。二是这个语言却是很“友好”,很人性化,像我刚学习这门语言,还什么都不会编的时候,我随便打出了一句help,界面上就输出了帮助文档。三是这个语言的强大的功能,1.3G不是白给的,很多C、java里需要用循环语句来完成的,在Matlab里只需要一句话就可以搞定了,刚上这门课时老师说C一堂课讲授的内容Matlab一句话就可以搞定了,看来不是假的。四是这门语言确实很有用,信号与系统课上学的很多内容都可以用Matlab来仿真,另外这门语言在很多其他的领域也都很有用,所以,我打算好好学习这门语言。 第一次交作业时我还只交上了两道题,那时候对这门语言接触得还比较少,但是就在交作业的那天我打算好好学习这门语言,而且在写作业的时候我确实喜欢上了这门语言。虽然第一次由于时间仓促只交上了两道题,可是那都是我自己写的,我觉得只有这样才能学到东西。第二天,在别人都在做第二次作业的时候,我却仍然在做第一次作业,我打算把第一次的作业完整的写一遍,即使这对我的分数一点帮助也没有。第二次作业我提前好几天就写完了,虽然没有完成全部的题目。我把第一第二次作业一起交了上去,我希望老师能帮我看一看。 上面只是对这门课程的一些怀念,课程已经结束了,不过我会继续学习这门语言的。下面就针对这次作业的要求,给这门课提一些看法,毕竟这才是正题。MATLAB 产品族可以用来进行以下各种工作: ● 数值分析 ● 数值和符号计算 ● 工程与科学绘图 ● 控制系统的设计与仿真 ● 数字图像处理 ● 数字信号处理 ● 通讯系统设计与仿真 ● 财务与金融工程 MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用 MATLAB 函数集)扩展了 MATLAB 环境,以解决这些应用领域内特定类型的问题。说实在的想完全掌握全部的基本上是不可能的,就像dsp一样,应用的范围很广,想一口吃可能不行,所以要结合专业来学习才好! 对于我们这些学习了C语言的学生,编程基本的语法学习起来很快的,和c语言很类似,而且是支持c语言函数的,或者说函数就是用c语言编的,完全是解释性的语言,像打草稿一样,可以一句句的编译,看结果的。 等我们编到基本的熟悉之后就可以编辑函数了,-------这个其实用的不多,为了应用的话,老师建议开始编写M文件,也就是把程序都写在m文件里面,然后编译,调试,根据错误信息来调试。 至于和专业相关的方面就说说自动化方面吧!和控制理论,fft,用的比较多,根轨迹,相平面,传递函数,拉普拉斯变换,奈氏曲线什么的,基本上都可以解决 03310901班 王鸿栋 20090286 对于授课方式,我觉得上课时老师是结合信号与系统来讲的,就是说课程的定位就是交给我们解决信号与系统方面问题的一个方法。我觉得Matlab功能远远不止于此。而且老师在课上讲程序都是一带而过,我觉得讲授的程序不必很多,一堂课只讲几个程序,但是对于每个程序,如果老师都能给我们进行分析,把这个程序将明白了,那么这堂课我们就能学到很多东西。而且这样讲课也不会使我们觉得枯燥。 对提高Matlab编程能力的方法,我想主要有以下三个: 1.查help 2.多上上论坛,搜索帖子、发帖子问人 3.阅读别人、特别是牛人的程序 当然了,正如所有的程序语言一样,“3分课本7分上机”,一定要动手才行,不能光看。多想、多思考、多尝试,才是正路。 最后,整理一下常用的快捷键(用【】表示)或命令: 1.在命令窗口(Command Window)中: 1)【上、下键】――切换到之前、之后的命令,可以重复按多次来达到你想要的命令 2)clc――清除命令窗口显示的语句,此命令并不清空当前工作区的变量,仅仅是把屏幕上显示出来的语句清除掉 3)clear――这个才是清空当前工作区的变量命令,常用语句clear all来完成 4)【Tab】键――(在command窗口,输入一个命令的前几个字符,然后按tab键,会弹出前面含这几个字符的所有命令,找到你要的命令,回车,就可以自动完成。目前讨论结果是:Matlab6.5版本中,如果候选命令超过100个,则不显示。而在Matlab7以后版本中,则没有这个限制,均可正常提示 5)【Ctrl+C】(或【Ctrl+Break】)――在Matlab程序运行过程中,可能由于程序编写的失误,导致程序不停的运行,在命令窗口输入“Ctrl+C”可以将运行的程序停下来,而不需要将整个Matlab程序关掉。不过进行此操作的前提是能够激活切换到命令窗口才行,呵呵。 2.在编辑器(Editor)中: 1)【Tab】(或【Ctrl+]】)――增加缩进(对多行有效)2)【Ctrl+[】--减少缩进(对多行有效) 3)【Ctrl+I】--自动缩进(即自动排版,对多行有效)4)【Ctrl+R】――注释(对多行有效)5)【Ctrl+T】――去掉注释(对多行有效) 6)【Ctrl+B】――括号配对检查(对版本6.5有效,但版本7.0无效,不知道是取消了还是换了另外的快捷键,请大牛们指点,其他版本没有测试过) 7)【F12】――设置或取消断点 8)【F5】――运行程序 其余的例如在Debug状态下的快捷键可以自己看菜单。 就说这么多,通过这个小学期,我觉得自己真的学到了很多! 03310901班 王鸿栋 20090286第三篇:matlab总结
第四篇:MATLAB总结
第五篇:Matlab学习总结