matlab在高数中的应用
解方程,矩阵操作,各种函数求值,微积分,基本你能想到的数学运算都能在matlab中找到相应的解决办法!
1概述安装介绍
略
2矩阵和数组
2.1创建特殊矩阵函数
Compan伴随矩阵
Diag对角矩阵
Eye单位矩阵
Gallery测试矩阵
Hadamard hadamard矩阵
Hilb hilb矩阵
Invhilb invhilb矩阵
Magic魔方矩阵
Ones全一矩阵
Rand均匀分布随机矩阵
Randn正态分布随机矩阵
Rosser经典对称特征测试矩阵
Wilkinson wilkinson特征值测试矩阵
Zeros全零矩阵
注:diag(A,n)以向量A为主对角线为基准偏移n个位置
2.2矩阵连接
水平 c=[a,b]或者c=[a b]
垂直 c=[a;b]
连接函数
Cat指定方向
Cat(1,a,b)水平
Cat(2,a。
b)垂直
Horzcat水平方向
Vertcat垂直方向
Repmat对现有矩阵复制粘贴
Blkdiag以对角阵方式重组
2.3改变矩阵形状
Reshape制定行列重排
Rot90逆时针90
Filplr垂直方向为轴旋转180
Flipud水平方向为轴旋转180
Flipdim指定方向为轴翻转矩阵
2.4向量生成函数
Linspace(a,b)首尾为a。
b的100个数
Linspace(a,b,n)
Logspace(a,b)以10为底
Logspace(a。
b,n)
Logspace(a,pi)
2.5矩阵信息的获取
Isempty判断为空
Isscalar判断为标量
Isvector判断向量
Issparse判断稀疏矩阵
Isa判断指定数据类型
Iscell判断元胞数组类型
Iscellstr元胞字符串数组类型
Isfloat判断浮点数
Isinteger判断整形类型
Islogical判断逻辑类型
Isnumeric判断数值类型
Isreal判断实数类型
Isstruct判断结构体类型
Length最长维长度
Ndims维数
Numel元素个数
Size指定维长度
2.6高维矩阵
Squeeze删除大小为1的维
Flipdim(a,n)翻转,第n维为基准
Shiftdim(a,n)移动数组,前n维到右边
Permute(a,order)按order向量重排
3数据类型
3.1数值类型
复数:i,j等价
无穷:inf,-inf
非数:NaN
0*inf=nan
Isnan判断非数
3.2逻辑类型
Ture/false设置真假
Logical数值转换成逻辑
&,|,~。
xor,any。
all逻辑运算符
&&,||短路式运算符
==。
~=,<,>,<=,>=关系运算符
Strcmp,strncmp,strcmpi,strncmpi字符串比较
3.3字符与字符串
创建可用到strcat
二维字符数组创建时每行字符列相同
Deblank提取字符串。
删除末尾空格
比较函数:Strcmp,strncmp,strcmpi,strncmpi加n的是比较前n个字符,加i的不分大小写,返回0/1
3.4元胞
创建:直接赋值方式;cell函数
包含的元素不用()而用{}
Celldisp显示具体内容
Cellstr用于字符串元胞数组
Length查询元胞长度
Iscell判断是否为元胞类型
Char元胞数组到字符数组转变
3.5构架
构架是带有域的数组
创建:直接创建;struct函数
4 MATLAB数值运算
4.1矩阵基本运算
加减简单
乘法(K*M)*(M*N)才可行
除法分为左除和右除,值不同
求幂要求方阵
按位运算.*./.\.^
4.2关系运算和逻辑运算
关系运算符:><>=<===~=
逻辑运算符:&|&&||~
异或:xor
数位逻辑与:bitand(a,b)
数位逻辑或:bitor(a,b)
数位逻辑非:bitcmp(a,n)
数位异或:bitxor(a。
b)
关系逻辑函数:
Xor(a。
b)异或
Any(a)或
All(a)与
Isaqual(a,b)对应相等为1
Ismember(a。
b)a元素属于b相应位置为1
4.3运算符优先级
略
5绘图
5.1相关函数
管理类:figure、subplot、zoom、hold、view、rotate
生成类:plot、line、stem、polar、fill、plotyy、plot3、surf、surfc、mesh、meshz、contour、contour3、contourf、waterfall、cylinder
注释和特性类:xlabel、ylabel、zlabel、text、text3、title、legend、box、set、grid、axes、axes equal、axes off、colorbar、clabel、colormap
5.2基本绘图指令
Polar极坐标中画圆
Polar(t’,r1)若在一个图中画几个图形用[]分别括起来,如:
[t’ t’],[r1 r2]
线形设计:
线形:--.--:
颜色:r g b c m y k w
点标记: o*. x s d h p>< ^ v
多期货考试资料图绘制:subplot
双轴绘图:plotyy
5.3图形标注
函数:title、xlabel、ylabel、zlabel、legend(图例)、colorbar(色彩条)、annotation(标注元素)
对齐属性值:
HorizontalAlignment(水平):left、center、right
VerticalAlignment(垂直):middle、top、cap、basline、battom
封闭区间填充:fill(a,b,‘c’)在使用之前使用hold命令
5.4模式化绘图
柱状图:bar或barh其模式有mode、stacked(堆在一个柱中)加引号
面积图:area
饼图:pie
直方图:hist(data,n) n:分割区间数
玫瑰图:rose(data,n)
离散数据绘图:stem
阶梯图:stairs
等高线图:contourf(填充式)
contour(一般式)
标注:colorbar填充,clable普通
罗盘图:compass
羽毛图:feather
向量场:quiver
函数绘图:涉及函数句柄
flplot(fun,limits)
ezplot(fun,[xmin,xmax,ymin,ymax]
ezpolar(fun,[a,b])
ezcontour(fun)
ezcontourf(fun)
5.5三维绘图
(1)数据准备
(2)绘图区创建
(3)绘图
(4)设置视角
(5)设置颜色表
(6)设置光照效果
(7)设置坐标轴和比例
(8)标注图形
(9)保存打印或导出
Plot3:曲线
Mesh(X,Y,Z):曲面
Meshc在mesh的基础画等高线
Meshz在mesh的基础上垂直连XY面
Surf(X,Y,Z)
Surfc等高线
Surfl(X,Y,Z,S)加光照效果
曲线旋转成面:
[X,Y,Z]=cylinder(R,N) N:线的条数
柱状图:bar3(data,‘mode’)
饼状图:pie3
离散点图:scater3和stem3
向量场图:quiver3(X,Y,Z,U,V,W,S)其中S为缩放比例
等高线图:contour3(X,Y,Z,n)
其中n为等高线划分的条数
函数绘图:
eplot3(funx,funy,funz,[tmin,tmax])指定范围的三维曲线
emesh(fun,domain)网线曲面
ezmeshc(fun,domain)带等高线
ezsurf(fun,domain)填充曲面
ezsurfc(fun,domain)带等高线
其中domain=[xmin,xmax,ymin,ymax]
显示控制:
Hidden:设置显示挡住的实体图形
Axes:坐标轴比例设置
View:设置视角
着色:加一指示颜色的数组
Colormap:颜色索引范围的设定
Shading:过渡设置。
其参数有faceted,flat和interp
Light:光照设置,参数有color,style(infinit和local)和position
Lighting:flat,gouraud,phong,off
Material:质感设置,其参数有shiny,dull,(光泽)metal(金属)
6图形对象和句柄
6.1 Matlab图形对象
最上层:root
图形窗口:figure,包括轴对象(Axes)和用户界面对象(UI)等
UI:如按钮、菜单、工具栏等
Axes:内核对象(core objects)、图形对象(plot objects)、组对象(group objects)、注释对象(annotation objects)
内核对象:line,patch,text。
rectangular,surface,image,
light等
绘图对象:内核的预定义组合
组对象:允许用户将axes的数个子对象看成一个整体,hggroup和hgtransform两种
注释对象:箭头、文本、文本框、线、矩形等。Plot edit和insert menu添加。
也可用函数annotation
图形对象属性:
Busyaction:控制回调函数中断方式
ButtonDownFcn:单击按钮的回调函数
Children:所有子对象的句柄列表
Parent:父对象句柄
CreateFcn:创建对象时执行的回调
DeleteFcn:删除对象时执行的回调
HitTest:单击时能否成为当前对象
Interruptible:回调函数是否被中断
Selected:对象是否被选中
SelectionHighlight:选中是否高亮
Tag:对象标签
Type:对象类型
UserData:交互数据
Visible:对象是否可见
6.2 MATLAB对象句柄
对象句柄:ID标示的机制,由MATLAB系统分配、唯一的标识对象的double型数值
寻访:对象句柄唯一对应
指定函数句柄:@和str2func
Get:获取当前窗口、轴和对象
Gcf:返回当前窗口句柄
Gca:返回当前轴句柄
Gco:返回当前对象句柄
还可以用set函数来设定
Findobj:以属性值为索引搜索
Copyobj:MATLAB对象的复制
Delete:对象的删除
6.3设置和查询对象属性
Set(object_handle,’PropertyName’,’NewPropertyValue’)对象属性的设置
Returned_value=Get(object_handle,’propertyName’)属性查询
默认属性的设置加前缀default
6.4图形窗口对象(Figure)
位置属性:Position
单位属性:unit,默认pixels(像素)
色彩属性:
Color:背景色,RGB
Colormap:色彩映像表,(n*3)RGB
FixedColors:线、字符色,RGB
MinColormap:最少色彩,标量
ShareColors:色彩资源能否共享,[{on}|off]
Dithermap:混合色图,(n*3)RGB
DithermapMode:混合模式,[auto{manual}]
绘制窗口的类型:
BackingStore,DoubleBuffer,Renderer和RendererMode
预定义光标形状(15种)
自定义光标属性:
Pointer:custom表示自定义
PointerShapeCData:1黑2白NaN透明
PointerShapeHotSpot:光标热点
6.5轴对象(Axes)
位置属性Position和单位属性Units
单轴对象常用控制属性:
XLim,YLim,ZLim:确定轴范围
XLimMode…:轴范围模式
XTick…:确定轴刻度位置
XTickMode…:刻度位置模式
XTickLabel…:刻度标记
XTickLabelMode…:刻度标记模
XDir…:轴方向
多轴重叠:subplot或者直接在图形窗口另行创建一个专门用于容纳注释对象的坐标轴
自动模式属性(照相机属性):
CameraPosition:相机位置[x,y,z]
CameraPositionMode:位置取值模式
CameraTarget:目标[x,y,z]
CameraTargetMode:目标模式
CameraUpVector:正位向量
CameraUpVectorMode:正位向量模式
CameraViewAngle:视角【0 180】
CameraViewAngleMode:视角取值模式
Projection:投影方式
6.6图形输出控制
NextPlot属性值:new、add、replace、 replacechildren
通过hold on和hold off可以设定图形窗口对象和轴对象的属性设置为add和replace。
7程序设计
7.1 M文件
M文件就是介绍上海的幻灯片一系列相关代码组成的一个扩展名为.m的文件。分为脚本文件和函数文件两类。
脚本文件不自带参数;
函数文件以function…开始
函数工作区间:Function workspace
M文件结构:函数声明行、H1行、帮助文本、编写和修改注释、函数体
P-码文件:为M文件生成的内部伪代码
P-码文件的预生成函数为Pcode,格式:pcode Func_name当前路径
Pcode Func_name-inplace M文件目录
对P-码文件的操作:
Inmem:列出所有内存中P-码文件名
Clear Func_name:清楚某个p-码文件
Clear function:清楚所有p-码文件
7.2函数
分为M-函数文件和匿名函数
一个M文件只能有1个主函数。
多个子函数
主函数还分为:私用函数和重载函数
嵌套函数:多平行和多层嵌套
7.3变量
变量名区分大小写;
最多包含63个字符;
必须以字母开始起名。
后可为字母、下划线;
不允许出现标点符号。
17个系统关键字:break、case、catch、continue、else、elseif、end、for、function、globle、if、otherwise、persistent、return、switch、try、while
可在命令窗口输入iskeyword显示。
特殊变量:ans,beep,pi,eps,inf,NaN(nan,i(j),nargin(输入个数),nargout(输出个数),realmin,realmax,bitmax,varargin(可变的函数输入参数个数),varargout
分为局部变量、全局变量(globle)、永久变量(persistent)
Inputname(n):第n个输入变量的调用名
7.4程序结构
分为顺序结构、循环结构(for或while)和分支结构(if或switch)
7.5程序控制语句
结束循环:continue、break、return
Continue和break:结束本次循环
Warning:错误警告语句
Error和errordlg(显示对话框)
Try…catch:try中有错是执行catch语句
Input和keyboard:输入控制语句
8程序调试、优化和出错处理
8.1调试
调试(debug):去除bug
Bug:语法错误、逻辑错误、异常
Debug函数:
Dbstop:设置断点
Dbclear:清除断点
Dbcout:重新执行
Dbdown/dbup:变更当前工作空间
Dbmex:MEX文件调试
Dbstack:列出函数调用关系
Dbstatus:列出所有断点
Dbstep:单步或多步执行
Dbtype:列印M文件
Dbquit:退出调试模式
Debug辅助函数:
Echo:在命令窗口显示当前执行代码
Disp:显示变量
Sprintf/fprintf:指定格式显示文本
Whos:列出工作空间中所有变量
Size:显示变量的大小
Keyboard:中断程序执行,等待输入
Return:结束函数执行
Warning:引发、显示指定的警告
Error:引发、显示指定的错误
Laster:返回最近产生的错误消息
Lasterror:错误消息及相关信息
Lastwarn:返回最近产生的警告
8.2性能优化
码表:tic——toc时间测试
效率优化技术:
代码向量化
预分配足够大的数组
对不可避免且耗时很大的循环尝试在MEX文件内实现
尽量避免更改变量的数据类型或维数
尽量避免实数和复数之间的相互赋值
尽量采用实数运算
合理使用逻辑运算
尽量采用函数而不是脚本文件
尽量使用load、save而不是IO函数
内存优化技术:whos,clear,save,load
预分配足够大的数组
尽量在函数开始时创建变量
利用repmat增加数组的空间大小
对大部分数据为0的矩阵变为稀疏矩阵
若要保存大量数据采用数组构架而非构架数组
及时地清除占用内存很大的临时变量
尽量地重用内存,而非开辟新内存
8.3出错处理
Try…catch查询语句
如何利用matlab对交易策略进行回测
首先你要提出一个自己的策略,一般来说就是一些规则的判断了,然后根据这些规则产生出signal,就是交易信号。发出了交易信号,就要根据信号进行持仓或者平仓操作。你要建立一个向量记录你每天的资产净值,或者说资产序列,其中的P&L就是跟你持仓的股票的价格变化来决定的。。。
说白了就是个模拟