matlab视频笔记
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
常量与变量
数据类型:基本型和构造型(包括数组型)
其中基本型包括数值型(整型和浮点型)和字符串型(需要引在单引号内)
变量:用变量名表示变量,变量名不能以数字和下划线开头
注意:matlab对大小写敏感
弱类型语言:当变量取完名后,所附值的类型即变量的类型,不用事先声明。
初始化变量:赋值语句(=),input 函数R=INPUT(‘How many apples’),初始化后会再workspace 体现
常量:i或j 虚数单位
Inf 或INF 无穷大
NaN 不定式
Pi 圆周率
对变量取名最好用小写字母,不用更大些字母,切有特定意义,且不与自带字符相同,如变量,函数名,ans
Matlab的基本数据结构
修改current folder 图标右键,属性
标量:1*1的矩阵
向量:1*n或n*1的矩阵
数组:与向量的结构相同,是matlab 中的用语
矩阵
定义矩阵:分号隔开是列,空格或逗号隔开是行,单引号’表示转置
内置函数生成矩阵:ones( a,b) 生成元素均为1 的矩阵
Zeros(a,b)
Eye(a,b) 类似单位矩阵的矩阵
冒号表达式:help:
3:9
3:2:9
数组元素如何引用:变量名(3)变量名(1,2)第一行第二列变量名()按列存储d(:,2)引用d全部第二列的元素
d(1,:)引用全部第一行元素
矩阵嵌套生成矩阵
函数:size() 矩阵的行数和列数
Length() 返回行数和列数的最大值
当矩阵所含数量较大时,为方便编辑,可以使用矩阵编辑器进行编辑,workspace 第一个按钮new variable
空数组和子数组
算术运算符
标量运算:
运算优先级:小括号,中括号,大括号都用小括号表示
矩阵运算:magic()魔方矩阵:加减乘除inv()逆矩阵函数A/B=A*INV(B) 矩阵的乘方
A.*B 对应元素相乘,区别于A*B,同理可得.^2 ./
A+3 A中各个元素均加3
编程
1.三大结构:顺序结构,选择结构,循环结构
2.编程的步骤:清晰陈述要解决的问题
明确输入输出及变量
所用算法
将算法转换为matlab 代码
测试程序
3.程序bug:调试
语法出错导致的bug
逻辑出错导致的bug
运行出现的bug
自定义函数
1 M文件的分类
1.1 脚本文件script file:用来执行简单的Matlab命令,运行时只需输入文件名字,MATLAB 就会自动执行文件中的命令
1.2 函数文件function file: 与脚本文件不同,它可以接受参数,也可以返回参数,一般情况下,用户不能靠单独输入其文件名来运行函数文件,而必须由其他语句来调用,如脚本文件或Matlab命令
Matlab 的大多数应用程序都以函数文件的形式给出。
如三角函数,工具箱
Which 函数如which sin 可以查看相应文件的位置
可以将自己编写的工具包嵌入matlab 中,以方便调用,网上有很多人编写
初识matlab函数
函数是特殊的M文件,功能相对独立,但一般不能独立运行,需要赋给它相应的参数才能运行。
一般通过命令语句如赋值语句来调用,讲返回值赋给一个变量。
基本格式如下:
结构:Function[outarg1,outarg2,...]=fname(inarg1,inarg2,...) fname是函数名称(function关键字必须写,系统会识别是普通的m文件还是函数m文件)
注:输出参数以逗号隔开,如果只有一个输出参数,方括号可以省略;函数名称的命名规则与变量相同,不要与系统内部重名;小括号内是入口参数,不管有几个入口参数,小括号均不可省略;入口参数与返回参数可以称为形式参数。
%H1注释行:该行注释的内容在lookfor 函数搜索的范围之内,给出函数作用的简单阐述%其他注释:更加详细的注释
(可执行代码)该代码用来实现函数的功能
(RETURN):最后的return可以省略
到此函数文件编写完毕,但是保存后点击运行会出现错误,原因是函数m文件不能独立运行,必须由其他代码引用。
所以还需在command window 中对其进行引用。
此时出现实参的概念,实参即为形式参数赋予的值,形式参数只是用来占位的,不参与计算,实参的命名
可以与形式参数不同,两个文件中返回值的命名也可以不一样。
注:1.给一个函数命名之前,可以用which 函数名来检测系统中是否存在相同的名字,以避免出错,如果不存在则可以使用该函数名,如果存在相同的,则需换其他函数名。
2. 函数文件中的变量(入口参数变量,中间变量,返回值变量)均不会出现在workspace 中,即对用户是隐藏的,其只存在于函数文件中,该类变量称为局部变量(local)。
函数当中的局部变量
编辑器中的调试功能:按钮:debug
断点:breakpoint:编辑器中,命令行的前面有小横线的命令行均可设置断点。
如何设置断点:1.在小横线处左键,出现红色的圆点,再次点击圆点取消断点
2. 快捷键f12
快捷键f5继续运行
函数调用过程中发生了什么:
按值传递(无论参数是数组还是标量):将实际参数的值复制一份给形式参数,无论函数文件对形式参数做了什么变化,其都不会影响最初给实际参数赋予的值,即使实际参数与形式参数的名字形同。
例子:参数值互换。
按地址传递:后续进行讲解
显示信息的几种方式
Msgbox:显示
Errodlg:
函数的函数
函数的函数:指的是输入参数中含有其他函数,传递给函数的函数的变量名一般情况应用于这个函数的执行过程。
编写一个函数的函数:能够绘制单参数函数在制定范围的图像·7
Matlab 的数值运算
1.多项式f(x)=a0x n+a1x n-1+a2x n-2+...+a n-1x+a 其中x可以是标量也可以是矩阵
定义多项式:[1 2 3 5 6]表示a=x4+2x3+3x2+5x+6
2.多项式的求值,求多项在某点处的值。
函数polyval()
如:polyval(a,2)表示求值函数a在x=2时的值。
数值微分
符号微分
1.符号极限:
1.1 limit(f) 默认对独立变量x取极限,并且默认x=0处的极限
1.2 limit(f,a) 默认对独立变量x取极限,且x=a
1.3 Limit(f,v,a) 对y求极限,y=a
1.4 limit(f,v,a,’right’) 取右极限
2.符号微分(注意变量需要引起来,区别于limit)
2.1 diff(s,’v’)
2.2 diff(s) 默认对独立变量x
2.3 diff(s,n):求n阶微分
2.4 diff(s,’v’,n) (对于要求导的变量可以用引号也可以不用)”
Eg: >> syms x y; 注意:需要先定义变量,否则会出错
>> f3=cos(2*x+y);
>> diff(f3,'x',2)
3.求偏倒数
方法一:利用多次diff
方法二:利用嵌套diff
多元函数的极(最)值
在matlab中同样有求多元函数的极(最)小值得函数,但由于多元函数的形式比较复杂,不同情况用到不同的matlab函数,若要求多元函数u在某一区域的极(或最)大值。
可转化为求-u在该区域的极小值。
1.非线性无约束情形
求极(或最)小值点(或最)小值得调用格式是:
求方程解析解
函数:solve 寻求表达式的零点或方程的解:solve函数中既可以写表达式也可以写方程式
线性方程和非线性方程的解析解均可以通过solve 函数来求解。
例子:求非线性方程组以y和z作变量的解:uy2+vz+w=0 y+z+w=0
在editor编辑器中编写代码:
clear;
clc;
syms x y u v w z; 声明符号变量
L1=u*y^2+v*z+w;
L2=y+z+w;
[y,z]=Solve(L1,L2,y,z); 注意小括号与中括号
解得表达方式有三种,具体参考视频教程:
1.一个方程对应一个解,直接返回响应的解;
2.当方程有多个解时,返回解得符号向量;
3.当解有多个,而输出只有一个时,解会输出到一个结构数组当中,用结构数组寻找相应
的域即可。
常微分方程(组)解析解
函数:dsolve
表达式化简
Matlab 提供了化简和美化符号表达式的各种函数,具体有,合并同类项collect, 多项式展开expand ,因式分解factor, 一般化简simplify, 不定式化简simple,通分numden , 和书写格式美化pretty.
1.合并同类项:两种调用方法
Eg1: f=x2y+xy-x2-2x
Syms x y;
f=x2y+xy-x2-2x;
Fx=collect(f);
Eg2: g=(-1/4)*x*exp(-2*x)+3/16*exp(-2*x)
Gx=collect(g,exp(-2*x))指定合并同类项的项
2.多项式展开factor
Eg: f1=x^2-y^2
Syms x y;
F1=x^2-y^2(此句后面不要加分号,让其运行一下,否则会出现没有定义f1的错误)Factor(f1);
3.一般化简simplify(化简完的有时候也不是最简,这时候就需要手动化简)
Eg:f2=x^2+y^2+2*x*y
Simplify(f2)
4.Simple 会用各种方法对多项式进行化简,(不常用)
5.通分numden
F4=x/y+y/x
当直接用numden(f4)时,给出的结果只有分子。
所以正确的调用形式是[s1,s2]=numden(f4) 给出的结果中s1是分子,s2是分母。
6.书写格式美化pretty(f4):可以将幂显示为常用的层叠形式,以便于视觉
绘图入门
1.Plot 一般选择步长为0.01或0.001
X=0:0.01:2*pi;
Y1=sin(x);
Plot(x,y1)
2.还可以给图像添加坐标的描述
Xlabel(‘x轴’)
Ylabel(‘y轴’)
网格grid on或grid off
另外还可以添加图例legend(‘正弦曲线’)
3.如何使两个图形同时出现
Plot(x,y1,x,y2)自动为不同函数分配不同颜色的曲线
还可以添加图例legend(‘正弦曲线’,’余弦曲线’)(按照plot函数中y1,y2的先后顺序)Title(‘’)添加图形的标题
4.如何将已写程序保存为m文件(edit 调出编辑器)
5.如何将下图中的横坐标改为想要的值axis axis equal使横纵坐标的长度相同aixs([0 2*pi -1 1]) 指定值横坐标为(0-2*pi)纵坐标是-1到1
6.如何改变线的属性,Help plot以及
7.调节图像属性的一些常熟函数:semilogx semilogy loglog legend title grid xlabel ylabel hold
8.坐标轴的控制
Semilogx(x,y)
semilogy(x,y)
loglog(x,y)
9.图像窗口的工具栏:可以对图形进行编辑
9.1 关于图像的保存:默认为fig格式,但是该格式的文件只能在matlab中打开,要想在其他文件中编辑或运用,可以将其保存为jpg. Bmp.等格式。
9.2 rotate 3d 旋转为3d
9.3 show plot tools and dock figure
10.格式化输出函数:fprintf fprintf(format,A...)格式化字符(查看fprintf的帮助文档和相应的变量
二维作图
注:脚本文件的名字不可以和函数的名字相同,否则会出错。
前5种图的调用方式都相同(例子见m文件)
1.Stem
2.Stairs阶梯图
3.Bar竖式条形图
4.Barh 水平条形图
pass 罗盘图(如果不对axis做说明,即可得出360度的图形,否则为扇形)
6.Pie(计算所占百分比)其调用方式不同于前五种
6.1 pie(X,explode)
Examples
Emphasize the second slice in the chart by setting its corresponding explode element to 1.
x = [1 3 0.5 2.5 2];
explode = [0 1 0 0 0];
pie(x,explode)
colormap jet
7.Hist 柱状图(直角坐标系中的柱状图,极坐标中的柱状图用函数rose)
有些图形的作图方式有两种,一是调用函数,二是选中要作图的变量,点击work space 的作图按钮,如果要对图形做进一步的编辑,可以参见上述图片所显示的地址。
Syntax
n = hist(Y)
n = hist(Y,x) 注:y是函数值,x是y的取值范围
n = hist(Y,nbins)
[n,xout] = hist(...)
hist(...)
hist(axes_handle,...)
Description
A histogram shows the distribution of data values.
n = hist(Y) bins the elements in vector Y into 10 equally spaced containers and returns the number of elements in each container as a row vector. If Y is an m-by-p matrix, hist treats the columns of Y as vectors and returns a 10-by-p matrix n. Each column of n contains the results for the corresponding column of Y. No elements of Y can be complex or of type integer.默认分为10份
n = hist(Y,x) where x is a vector, returns the distribution of Y among length(x) bins with centers specified by x. For example, if x is a 5-element vector, hist distributes the elements of Y into five bins centered on the x-axis at the elements in x, none of which can be complex. Note: use histc if it is more natural to specify bin edges instead of centers.
n = hist(Y,nbins) where nbins is a scalar, uses nbins number of bins.分为Nbins份
8.Feather 函数
9.Line 函数
10.Ezplot和fplot:这两个函数不需要创建中间数据,调用函数类似,后者更精确,所以优先使用该函数(详细调用方法见help 文件)
10.1 fplot 函数是适应性的,它意味着在自变量范围内函数突然变化显示更多的点
10.2 fplot 支持latex命令,用来指定坐标图的标题和坐标标签,而函数ezplot 不能。
高维数组
1. 什么是高维数组:
2. 如何创建高维数组:方法一:下标法
>> d(:,:,1)=[1 2 3;4 5 6;7 8 9];
>> d(:,:,2)=[2 3 4;5 6 7;8 9 10];
>> d(:,:,3)=[3 4 5;6 7 8;9 10 11]
方法二:函数生成法zeros ones randn rand
方法三:拼接法:reshape repmat cat
3. 如何访问高维数组中的元素:
4. 如何存储:
三维作图(注意点乘)
命令:plottools 或者图像显示窗口的icon开启plottools (查看帮助文档help plottools)
5. 三维图像能更丰富的表现数据的几何关系,三维图像常用于表现以下两类数据:
5.1 两个变量是同一自变量的函数,当你希望显示自变量重要性时,你可以用三维作图表示
如:x和y均是t的函数
5.2 一个变量是另外两个变量的函数
6.三维图像包括:三维曲线图,三维表面图,三维网格图,三维等高线图(任意两变量函数均可以用三维表面图,三维网格图,三维等高线图来表示)
6.1 三维曲线图:Plot3()
6.2 三维表面图:surf(Z)
s urf, surfc:3-D shaded surface plot
To graph selected variables, use the Plot Selector in the Workspace Browser, or use the Figure Palette Plot Catalog. Manipulate graphs in plot edit mode with the Property Editor. For details, see Plotting Tools —Interactive Plotting in the MATLAB Graphics documentation and Creating Graphics from the Workspace Browser in the MATLAB Desktop Tools documentation.
Syntax
前四种最为常用
surf(Z)
surf(Z,C)
surf(X,Y,Z)
surf(X,Y,Z,C)
surf(...,'PropertyName',PropertyValue)
surf(axes_handles,...)
surfc(...)
h = surf(...)
Description
Use surf and surfc to view mathematical functions over a rectangular region(矩形区域). surf and surfc create colored parametric surfaces specified by X, Y, and Z, with color specified by Z or C.
surf(Z) creates a a three-dimensional shaded surface from the z components in matrix Z, using x = 1:n and y = 1:m, where [m,n] = size(Z). The height, Z, is a single-valued function defined over a geometrically rectangular grid. Z specifies the color data as well as surface height, so color is proportional to surface height.
Suf(z)可以创建一个三维的阴影表面图,Z是一个矩阵形式,x定义为1:n,y定义为1:m,z是m行n列的矩阵,高度z是一个单值函数,定义在一个曲形的网格区。
Z不仅可以指定网格图的高度,还可以定义网格图的颜色。
surf(Z,C) plots the height of Z, a single-valued function defined over a geometrically rectangular grid, and uses matrix C, assumed to be the same size as Z, to color the surface.
surf(X,Y,Z) creates a shaded surface using Z for the color data as well as surface height. X and Y are vectors or matrices defining the x and y components of a surface. If X and Y are vectors, length(X) = n and length(Y) = m, where [m,n] = size(Z). In this case, the vertices of the surface faces are (X(j), Y(i), Z(i,j)) triples. To create X and Y matrices for arbitrary domains, use the meshgrid function.
Meshgrid(创建网格)
Generate X and Y arrays for 3-D plots
Syntax
[X,Y] = meshgrid(x,y)
[X,Y] = meshgrid(x)
[X,Y,Z] = meshgrid(x,y,z)
Description
[X,Y] = meshgrid(x,y) transforms the domain specified by vectors x and y into arrays X and Y, which ca n be used to evaluate functions of two variables and three-dimensional mesh/surface plots. The rows of the output array X are copies of the vector x; columns of the output array Y are copies of the vector y.
[X,Y] = meshgrid(x) is the same as [X,Y] = meshgrid(x,x).注意中括号,不是小括号
[X,Y,Z] = meshgrid(x,y,z) produces three-dimensional arrays used to evaluate functions of three variables and three-dimensional volumetric plots.
surf(X,Y,Z,C) creates a shaded surface, with color defined by C. MATLAB performs a linear transformation on this data to obtain colors from the current colormap.
surf(...,'PropertyName',PropertyValue) specifies surface properties along with the data.
surf(axes_handles,...) and surfc(axes_handles,...) plot into the axes with handle axes_handle instead of the current axes (gca).
surfc(...) draws a contour plot beneath the surface.增加一个等高线
h = surf(...) and h = surfc(...) return a handle to a surfaceplot graphics object.
Remarks
surf and surfc do not accept complex inputs.
6.3 网格图mesh
调用方法类似上面的表面图
6.4 等高线图contour
6.5 其他三位作图函数waterfall
注:其他对图形的精细化处理可以参照帮助文档中的view control and lighting
三维版本的绘图函数
加上ez后表示不需要中间变量即可作图
ezplot, ezplot3, ezpolar, ezcontour, ezcontourf, ezsurf,
ezsurfc, ezmeshc, mesh, vectorize, function_handle.
1.Ezmesh
2.ezplot3,ezsurf,ezsurfc
3.Bar3(x,y), pie3(x), stem3(x,y,z)
4.
4.1 球体:sphere ;
4.2 cylinder 圆柱体
4.3 peaks 峰值函数
4.4 patch 曲线片
4.5 fill3 填充图形
4.6 quiver 箭头图形
4.7 feather 羽毛图形
下面详细讲述ezsurf 和ezsurfc(借助帮助文档)
调用语句:
ezsurf(fun)
ezsurf(fun,domain)
ezsurf(funx,funy,funz)
ezsurf(funx,funy,funz,[smin,smax,tmin,tmax])
ezsurf(funx,funy,funz,[min,max]
使用字符串来描述函数语句FUN
Example: ezsurf('u^2 - v^3',[0,1],[3,6]) 只需要描述函数表达式以及自变量的取值范围即可。