完整版Matlab学习笔记全.docx

上传人:b****8 文档编号:9519313 上传时间:2023-02-05 格式:DOCX 页数:14 大小:24.01KB
下载 相关 举报
完整版Matlab学习笔记全.docx_第1页
第1页 / 共14页
完整版Matlab学习笔记全.docx_第2页
第2页 / 共14页
完整版Matlab学习笔记全.docx_第3页
第3页 / 共14页
完整版Matlab学习笔记全.docx_第4页
第4页 / 共14页
完整版Matlab学习笔记全.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

完整版Matlab学习笔记全.docx

《完整版Matlab学习笔记全.docx》由会员分享,可在线阅读,更多相关《完整版Matlab学习笔记全.docx(14页珍藏版)》请在冰豆网上搜索。

完整版Matlab学习笔记全.docx

完整版Matlab学习笔记全

Matlab学习笔记

——《MATLAB与科学计算》

王正盛国防工业出版社

1.MATLAB入门4

who、whos和永久变量4

显示格式4

图形4

2.MATLAB数值计算5

1.常用命令:

5

2.矩阵的保存和获取5

3.矩阵的运算和数组的运算5

4.线性方程组5

5.多项式6

6.数值积分6

7.一般非线性方程组求解6

8.微分方程的数值求解7

三.MATLAB的符号计算7

1.符号变量和符号表达式7

2.微积分运算7

3.解方程8

4.化简和代换8

5.MATLAB的符号表达式命令8

4.MATLAB的图形和可视化9

1.二维图形9

2图形标记9

3.特殊坐标和图形9

4.其他命令9

5.填充命令10

6.三维图形10

7.符号绘图10

8.其他10

5.MATLAB程序设计10

1.概述:

10

2.命令文件11

3.程序文件11

6.MATLAB图形用户界面(GUI)设计11

7.基于MATLAB的大规模矩阵计算11

1.稀疏矩阵11

8.基于MATLAB的最优化问题求解12

1.线性规划问题12

2.非线性问题12

3.二次规划问题12

9.基于MATLAB的数据插值和拟合12

1.一维数据插值12

2.二维数据插值13

3.曲线拟合13

十.基于MATLAB的图像处理初步13

1.图像分类13

2.图像的读取和显示13

.MATLAB入门

who、whos和永久变量

who变量名%检查内存变量。

Whos%检查驻留变量的详细情况。

MATLAB自定义的永久变量:

inf%无穷大NaN%不定量i,j%虚数单位

eps%计算机中的最小正数pi%圆周率flops%浮点运算次数

显示格式

format命令改变数字显示格

MATLAB中以短格式(5个有效数字)显示计算结果,可以用式

1.变量的存储和调用

1)存储当前工作空间中的变量

Save%将所有的变量存入文件MATLAB.mat中

Savemydate%将所有变量存入指定文件

Savemydatexyz%将指定的变量存入指定的文件中

2)将数据文件的变量载入当前的工作空间将save换作load即可

图形

1.二维图形绘制命令

Plot(x,y);

2.三维图形绘制命令

Mesh(z);

2.用户目录的建立在命令窗口输入:

cdc:

\mydir

.MATLAB数值计算

1.常用命令:

Reshape命令

X=1:

1:

6;%产生6个元素的行向量

Reshape(x,2,3);%利用X行向量产生一个2*3的向量

diag命令:

ar=rand(4,4)%产生一个4*4的0-1均匀随机向量d=diag(ar)%用ar的主对角元形成向量d

D=diag(d)%利用d构成对角矩阵D

Size:

获取矩阵的行数和列数

2.矩阵的保存和获取

1)利用m文件

利用文件编辑器编辑矩阵AM=[123;456;789]——》保存为在自己的目录下名的matrix.m——》在MATLAB命令窗口中只要输入matrix就可以调用AM矩阵

2)通过mat文件

Mat文件是MATLAB中保存数据的一种标准格式二进制文件,通过save和load执行,如前

所述

3)利用外部数据文件装入到指定矩阵中

假如磁盘中已有名为c:

\mydir\date.dat的二进制数据文件,利用loadc:

\mydir\date.dat命令可以在MATLAB工作空间中产生一个名为date的矩阵

3.矩阵的运算和数组的运算

矩阵运算是按矩阵的运算法则进行的;数组运算无论何种操作都是对元素逐个进行的,数组运算需要在运算符前加点号。

4.线性方程组

1)采用求逆运算:

x=inv(A)*b;

2)采用左除运算:

x=A\b;

说明:

只有在A是方阵时可以采用求逆运算;求逆运算没有左除运算好;一般都用左除运算吧

在解欠定方程时,解得结果是所有结果中范最小的一个

5.多项式

1.多项式的创建

1)多项式系数向量直接输入法

2)利用指令:

p=poly(AR);AR为多项式的根或者特征多项式常用多项式的运算指令:

R=roots(P)%求多项式的根

PA=polyval(p;S)%按数组运算规则计算多项式值。

P是多项式,S为矩阵

PA=polyvalm(p;S)%按向量运算规则计算多项式值。

[r,p,k]=residue(b,a)%部分分式展开。

b,a分别是分子,分母多项式的系数向量。

R,p,k分别是留数、极点、直项向量。

P=polyfit(x,y,n)%用n阶多项式拟合x,y向量给定的数据。

6.数值积分

S=quad(f‘name',j积分下限,积分上限,tol,trace)%trace为1用图形展示积分过程,精确度缺省时取0.001

S=quad8(‘fname',j积分下限,积分上限,精确度,trace)

7.一般非线性方程组求解

1)单变量非线性方程求解

先建立方程fname.m文件——》调用fzero求解

x0

Z=fzero(‘fname',x0,tol,trace)%x0为起始搜索点,一个函数可能有多个根,但结果只取离最近的根

2)求解非线性方程组

先建立方程组的m文件——》调用fsolve函数求解

X=fsolve(‘fname',x0)%x0是对解的猜测值functionq=myxyz(p)x=p

(1);y=p

(2);z=p(3);

q

(1)=sin(x)+yT+log(z)-7;

q

(2)=3*x+2*y-zA3+1;

q(3)=x+y+z-5;

调用x=fsolve('myxyz',[111])

8.微分方程的数值求解

[t,x]=ode23(‘fnanme',to,tf,,x0,tol,trace)

[t,x]=ode45(‘fnanme',to,tf,,x0,tol,trace)先建立微分方程fname.m文件——》调用ode23或ode45函数。

functionyp=funt(t,y)

yp=(y"2-t-2)/4/(t+1);

调用

x'=f(x,t)

[t,y]=ode23('funt',[0,10],2)注:

该指令是针对一阶微分方程设计的。

因此对于高阶微分方程,必须演化成形如的一阶微分方程。

三.MATLAB的符号计算

1.符号变量和符号表达式

symx%定义一个符号变量

findsym(g)%确认符号表达式中的符号变量

symsx,y,z%定义一组符号变量

注:

事实上,sym和syms在定义符号变量时除了个数的差别外,还有定义的结果也不同,注意在MATLAB中体会。

f=sym(‘1+sin(x)')

subs(f,old,new)%用新的符号变量代替旧的符号变量,可以是一个变量也可以是一个数组。

2.微积分运算

1)微分

diff(f,t,n)%函数f对t求导,如果t缺省,则字符表上最接近x的符号变量求导;n表示求导次数

2)积分

int(f,t,t0,tf)%函数f对x在t0到tf上求积分

3)求极限

Iimit(f,t,a,'left或者right')%当t趋于a时,f的极限,当a缺省时,a为0,left或者right表示左右极限。

4)求级数和

symsum(s,t,a,b)%t从a到b时s的级数和

5)求泰勒级数

taylor(f,x,a)%函数f对符号变量x在a点附近的泰勒级数,a缺省时为0,详见help。

命令栏输入taylortool可以调用泰勒图形展开界面。

3.解方程

1)代数方程

solve(f,t)%解代数方程f=0

或者solve('f(x)=g(x)')

也可以利用solve解方程组,详见help

2)解微分方程

dsolve('s',‘s1','s2',…,‘x')%s1、s2、…时初始条件

3)线性代数

MATLAB中大多数用于数值线性代数的计算命令,都可以用于符号变量线性代数运算

4.化简和代换

collect('s')%合并同类项expand('s')%将乘积形式化为和式simplify('s')%利用恒等式化简hornor('s')%将多项式化为嵌套式

此外还有simple

5.三种变换:

傅立叶变换fourier(f,trans_var,eval_point)反变换:

ifourier()拉普拉斯变换laplace(f,trans_var,eval_point)反变换:

ilaplace()z变换ztrans(f,trans_index,eval_point)反变换:

iztrans()

5.MATLAB的符号表达式命令

helpsymbolic

四.MATLAB的图形和可视化

1.二维图形

plot(x,y)%最简单最常用的二维绘图命令

fplot(fname,lims,tol)%自适应二维函数绘图命令,在函数变化率大的部分密集采样绘图,提高图形真实性。

2图形标记

title(‘图形名称')%给图形命名xlabel(‘x轴坐标')ylabel(‘y轴坐标名')

text(x,y,'标记'%在坐标点(x,y)处加标记

legend('图例1''图例2',)

axis([x,y的坐标范围])

axis(on'%显示坐标axis(‘off')

另外绘图命令中还可以对图形的坐标,颜色,线型进行设定,详见help

3.特殊坐标和图形

loglog(x,y)%双对数坐标semilogy(x,y)%以x轴为对数坐标polar(theta,rho)%极坐标stair(x,y)%阶梯图形bar(x,y)%条形图stem(x,y)%火柴杆状图

pie(x)%绘制饼状图pie3(x)%绘制三维饼状图

ribbon(x,y,c)%绘制带状图,c是颜色

4.其他命令

subplot(a,b,n)%将绘图区分为a*b区,选择其中的n区

hold%在原来视图中绘图

plotyy(x1,y1,x2,y2)%在同一坐标系中左右使用不同的坐标

5.填充命令

fill(x1,y1,x2,y2,'、',c)%用c颜色填充由(x1,y1)、(x2,y2)…确定的多边形

erea(x,y,'')%用r色填充由x,y函数确定边界的区域

6.三维图形

1)绘图命令

plot3(x,y,z)%最基本的三维图形函数,函数除了增加第三维坐标外,功能和plot相同

mesh(x,y,z)%绘制三维网格图。

在不需要特别精细的三维曲面结果时使用。

surf(x,y,z)%绘制三维曲面图,各线条之间的补面用颜色填充

2)视点

view(方位角,俯视角)或者view([x,y,z])%[x,y,z]观察点坐标

3)等高线

contour(x,y,z,n)%以z为高程值,x,y为横纵坐标的平面等值线图,n缺省值为10

contour3(x,y,z,n)%'''''三维等值线图

meshc(x,y,z)%绘制带等值线图的网线图

其他相关的还有pcolor()、meshz()、surfc()等,详见help。

7.符号绘图

ezplot(f,[a,b])%二维符号绘图ezplot3(f,[a,b])%三维符号绘图ezmesh()、ezsurf()%三维符号绘图

8.其他

1)球面绘图

sphere(n)%绘制单位球面,且球面上的网格线条数为n

cylinder(r,n)%轴线定位z轴r表示柱面的母线,是向量;n表示柱面上网格线条数

五.MATLAB程序设计

1.概述:

1)MATLAB有两种工作方式:

一种是交互式的命令行工作方式;一种是m文件的程序工

作方式。

2)m文件有两种:

一种是命令文件,相当于将命令行的命令先集中写好存在m文件中;一

种是函数文件。

2.命令文件

1)数据的输入输出

result=input(prompt)%提示输入一个量

disp(X)%isplaytextorarray

pause(n)%暂停n秒,n缺省时暂停至敲任意键结束。

3•程序文件

function[输出形参表]=fname(输入形参表)

函数体

MATLAB中的程序设计同样着重掌握if语句,while语句,for语句和switch语句等,同时

MATLAB中没有花括弧,每一条if或者while语句都需要用end结束。

6.MATLAB图形用户界面(GUI)设计

太难,暂时跳过

7.基于MATLAB的大规模矩阵计算

1.稀疏矩阵

表MATLAB提供的创建稀疏矩阵函数表

sparse

convertsafullmatrixtosparseformbysqueezingoutanyzeroelements.

S=sparse(A)

S=sparse(i,j,s,m,n)

spdiags

extractsallnonzerodiagonalsfromthem-by-nmatrixA.

B=spdiags(A,d)

A=spdiags(B,d,m,n)

A=spdiags(B,d,A)

spconvert

convertsamatrixDwithrowscontaining[i,j,s]or[i,j,r,s]tothecorrespondingsparsematrix.

S=spconvert(D)

find

locatesallnonzeroelementsofarrayX,andreturnsthe

linearindicesofthoseelementsinvectorind

ind=find(X)

ind=find(X,k)

[row,col,v]=find(X,...)

speye

ormanm-by-nsparsematrix

S=speye(m,n)

with1s

onthemaindiagonal

full

convertsasparsematrixStofullstorageorganization

A=full(S)

8.基于MATLAB的最优化问题求解

1.线性规划问题

x=linprog(f,A,b,Aeq,beq,lb,ub,xO,options)%求解线性规划问题,注意f为列向量

2.非线性问题

1)有约束一元函数

x=fminbnd(fun,x1,x2,options)%x1,x2是取值范围

2)无约束多元函数

x=fminsearch(fun,x0,options)%xO是初始值向量

x=fminunc(fun,x0,options)

注:

当函数结束大于2时,使用fminnuc比fminsearch更有效,但当所选函数高度不连续时,

使用fminsearch效果较好

3)有约束多元函数

x=fmineon(fun,xO,A,b,Aeq,beq,lb,ub,nonIcon)%nonlcon通过指定函数柄来使用非线性约束,

如:

x=fmincon(fun,xO,A,b,Aeq,beq,lb,ub,@mycon)%mycon是定义好的非线性等式和不等式

约束,缺省时用[]代替。

3.二次规划问题

x=quadprog(H,f,A,b,Aeq,beq,lb,ub,xO)%ThisMATLABfunctionreturnsavectorxthatminimizes1/2*x'*H*x+f*x.

9.基于MATLAB的数据插值和拟合

1.一维数据插值

1)vq=interp1(x,v,xq,method)%x、v是数据值,xq是要求点,method是具体算法method有四种:

’linear'分段线性插值,缺省值

‘cubic'分段三次多项式插值

‘spline'三次样条插值,即在每个分段区间内构造一个三次多项式,使其插值函数满足插值条件,还要求在各个节点出具有光滑的条件

‘nearest'最邻近区域插值

2)三次样条插值yy=spline(x,Y,xx)

pp=spline(x,Y)%调用结果用yyi=ppvsl(pp,xxi)

2.二维数据插值

1)插值基点为网格节点(即节点有序)

Vq=interp2(X,Y,V,Xq,Yq,‘method')%二维数据插值,用法和二维数据插值相同,method

缺省值为linear

2)插值基点为散乱节点

vq=griddata(x,y,v,xq,yq,‘method')

3.曲线拟合

P=polyfit(x,y,N)%用n阶多项式拟合x,y向量给定的数据;PA=polyval(P,xi)%求xi点上的拟合函数近似值

十.基于MATLAB的图像处理初步

1.图像分类

1)索引图像:

图像信息包含一个数据矩阵X和一个颜色印象矩阵MAP,MAP矩阵的每一行

分别表示红绿蓝的颜色值,MATLAB中,索引图像是从像素值到颜色印象表值得“直接映

射”

2)灰度图像:

一副灰度图像是一个数据矩阵I,其中I中的数据均代表了在一定范围中的颜色灰度值。

MATLAB中把灰度图像存储在一个数据矩阵,该数据矩阵中的元素分别代表了图像中的像素。

3)RGB图像:

即真彩图像,在MATLAB中存储为n*m*3的数据矩阵。

数组中的元素定义了图像中每一个像素的红绿蓝的颜色值。

4)二值图像:

与灰度图像相同,二值图像只需要一个数据矩阵,每个像素只取两灰度值。

2.图像的读取和显示

info=imfinfo('文件名.格式')%获取图像信息A=imread(filename,文件格式)

[X,map]=imread(...)%二维图像读取,如索引图像

imwrite(A,filename)%writesimagedataAtothefilespecifiedbyfilenameimshow文件名.格式%显示图像

image(图像数据)%显示图像

3.图像格式之间的转换详见help。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1