(完整word版)Matlab学习笔记(全)

(完整word版)Matlab学习笔记(全)
(完整word版)Matlab学习笔记(全)

Matlab学习笔记

——《MATLAB与科学计算》

王正盛国防工业出版社

一.MA TLAB入门 (4)

who、whos和永久变量 (4)

显示格式 (4)

图形 (4)

二.MA TLAB数值计算 (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.MA TLAB的符号表达式命令 (8)

四.MA TLAB的图形和可视化 (9)

1.二维图形 (9)

2图形标记 (9)

3.特殊坐标和图形 (9)

4.其他命令 (9)

5.填充命令 (10)

6.三维图形 (10)

7.符号绘图 (10)

8.其他 (10)

五.MA TLAB程序设计 (10)

1.概述: (10)

2.命令文件 (11)

3.程序文件 (11)

六.MA TLAB图形用户界面(GUI)设计 (11)

七.基于MA TLAB的大规模矩阵计算 (11)

1.稀疏矩阵 (11)

八.基于MA TLAB的最优化问题求解 (12)

1.线性规划问题 (12)

2.非线性问题 (12)

3.二次规划问题 (12)

九.基于MA TLAB的数据插值和拟合 (12)

1.一维数据插值 (12)

2.二维数据插值 (13)

3.曲线拟合 (13)

十.基于MA TLAB的图像处理初步 (13)

1.图像分类 (13)

2.图像的读取和显示 (13)

一.MATLAB入门

who、whos和永久变量

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

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

MATLAB自定义的永久变量:

eps %计算机中的最小正数inf %无穷大

pi %圆周率NaN %不定量

flops %浮点运算次数i,j%虚数单位

显示格式

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

1.变量的存储和调用

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

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

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

Save mydate x y z %将指定的变量存入指定的文件中

2)将数据文件的变量载入当前的工作空间

将save换作load即可

图形

1.二维图形绘制命令

Plot(x,y);

2.三维图形绘制命令

Mesh(z);

2.用户目录的建立

在命令窗口输入:cd c:\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=[1 2 3;4 5 6;7 8 9]——》保存为在自己的目录下名的matrix.m ——》在MATLAB命令窗口中只要输入matrix就可以调用AM矩阵

2)通过mat文件

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

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

假如磁盘中已有名为c:\mydir\date.dat的二进制数据文件,利用load c:\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(‘fname’,j积分下限,积分上限,tol,trace) %trace为1用图形展示积分过程,精确度缺省时取0.001

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

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

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

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

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

2)求解非线性方程组

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

X=fsolve(‘fname’,x0) %x0是对解的猜测值

function q=myxyz(p)

x=p(1);y=p(2);z=p(3);

q(1)=sin(x)+y^2+log(z)-7;

q(2)=3*x+2*y-z^3+1;

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

调用

x=fsolve('myxyz',[1 1 1])

8.微分方程的数值求解

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

[t,x]=ode45(‘fnanme’,to,tf,,x0,tol,trace)

先建立微分方程fname.m文件——》调用ode23或ode45函数。

function yp=funt(t,y)

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

调用

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

注:该指令是针对一阶微分方程设计的。因此对于高阶微分方程,必须演化成形如x’=f(x,t)的一阶微分方程。

三.MATLAB的符号计算

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

sym x %定义一个符号变量

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

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

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

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)求极限

limit(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的符号表达式命令

help symbolic

四.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)%在同一坐标系中左右使用不同的坐标

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

erea(x,y,’r’)%用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)MA TLAB有两种工作方式:一种是交互式的命令行工作方式;一种是m文件的程序工作方式。

2)m文件有两种:一种是命令文件,相当于将命令行的命令先集中写好存在m文件中;一种是函数文件。

1)数据的输入输出

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

disp(X) % isplay text or array

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

3.程序文件

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

函数体

MATLAB中的程序设计同样着重掌握if语句,while语句,for语句和switch语句等,同时MATLAB中没有花括弧,每一条if或者while语句都需要用end结束。

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

太难,暂时跳过

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

1.稀疏矩阵

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

1.线性规划问题

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

2.非线性问题

1)有约束一元函数

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

2)无约束多元函数

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

x = fminunc(fun,x0,options)

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

3)有约束多元函数

x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon) %nonlcon通过指定函数柄来使用非线性约束,如:x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,@mycon) %mycon是定义好的非线性等式和不等式约束,缺省时用[]代替。

3.二次规划问题

x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0) % This MA TLAB function returns a vector x that

minimizes 1/2*x'*H*x + f'*x.

九.基于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矩阵的每一行分别表示红绿蓝的颜色值,MA TLAB中,索引图像是从像素值到颜色印象表值得“直接映射”

2)灰度图像:一副灰度图像是一个数据矩阵I,其中I中的数据均代表了在一定范围中的颜色灰度值。MA TLAB中把灰度图像存储在一个数据矩阵,该数据矩阵中的元素分别代表了图像中的像素。

3)RGB图像:即真彩图像,在MA TLAB中存储为n*m*3的数据矩阵。数组中的元素定义了图像中每一个像素的红绿蓝的颜色值。

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

2.图像的读取和显示

info=imfinfo(’文件名.格式’)%获取图像信息

A = imread(filename, 文件格式)

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

imwrite(A,filename) %writes image data A to the file specified by filename

imshow 文件名.格式%显示图像image(图像数据)%显示图像3.图像格式之间的转换

详见help。

相关主题
相关文档
最新文档