写在后面的话
文章内容较多,是自己的课程笔记
原课链接:
https://www.bilibili.com/vide…
内容以课堂ppt上内容为主,并没有记录课堂例子
大家能够当作字典来用
提醒:ctrl+F能够进行浏览器页面的查找
专题一 课程导入
1.1.1课程导入
专题二 MATLAB基础知识
2.1.1MATLAB零碎环境
-
反对这个操作
cd 文件目录 %进入指定文件门路
-
命令行窗口创立的变量能够在工作区窗口查看其值
也能够在工作区对变量进行操作和解决
-
matlab的搜寻门路
先变量名,再外部函数名,最初程序文件(先以后,后指定)
申请的变量可能会笼罩掉某些函数名或程序文件
-
设置文件搜寻门路
- 用path命令设置文件的搜寻门路
path(path,'门路') %设置文件的搜寻门路
-
用对话框设置文件的搜寻门路
主页\(\rightarrow\)设置门路
2.2.1MATLAB数值数据
-
数据类型(和C相通)
-
整型
-
分类:
无符号整数:无符号8位整型(int8)、无符号16位整型、无符号32位整型、无符号64位整型
有符号整数:有符号8位整型(uint8)、有符号16位整型、有符号32位整型、有符号64位整型
数据类型 变量名 = 数值 %规定数据类型的赋值
- 超栈时返回该类型最大值
-
-
浮点型
- 分类:双精度浮点型(double)、单精度浮点型(single)
-
应用:
single(变量名) %转化为单精度浮点型 double(变量名) %转化为双精度浮点型
-
复型(复数型)
- 实部和虚部默认为双精度型
- 虚数单位i或者j
real(复型变量) %求复数的实部 imag(复型变量) %求复数的虚部
-
-
format命令扭转输入格局
format 输入格局 %扭转输入格局
-
函数
-
函数的调用格局:
函数名(函数自变量的值)%函数的调用格局
-
罕用函数
- 三角函数分角度制和弧度制,应用角度值时须在函数名开端加d
-
绝对值函数
abs(变量名) %求实数的绝对值、复数的模、字符串的ASCLL值
-
取整函数fix、floor、ceil、round
round(变量名) %示意四舍五入的规定取整 ceil(变量名) %指向上取整 floor(变量名) %指向下取整 fix(变量名) %指舍去小数取整
-
判断是否是素数的函数
isprime(变量名) %当变量为素数时返回1,反之返回0
-
2.3.1变量及其操作
-
命名规定
C语言的命名规定,但matlab最多辨认63个字符
-
matlab规范函数名和命令名都是小写
赋值语句后加分号,只执行操作,不显示后果
NaN %示意非数 ans %默认赋值变量 pi %圆周率
-
变量的治理
-
内存变量的删除和批改
who %输入已有的变量名 whos %输入一张对于变量信息的表
-
内存变量文件(.mat)
save 文件名 变量名1 变量名2 ··· %创立内存变量文件 load 文件名 %加载内存变量文件
-
2.4.1MATLAB矩阵的示意
-
矩阵的建设
-
间接输出:
矩阵元素用中括号括起来,同行元素以逗号分隔,异行元素通过分号分隔
-
利用其余矩阵建设大矩阵:
将其余矩阵当作元素
- 利用实部矩阵和虚部矩阵建设复数矩阵
-
-
向量的产生
-
冒号表达式
初始值:步长:终止值
-
linspace函数:
linspace(初始值,终止值,元素总数)
-
-
构造矩阵和单元矩阵
-
构造矩阵:
构造矩阵元素.成员名 = 表达式 %构造矩阵的赋值
-
单元矩阵:
矩阵的每个元素类型不肯定雷同,和个别矩阵的建设类似,但单元矩阵是由大括号括起来的
-
2.5.1矩阵元素的援用
-
援用形式
- 通过下标援用矩阵元素
-
通过序号来援用
matlab中矩阵元素按列存储,矩阵的相对序号即矩阵在内存中的排列程序
元素的存储序号 = sub2ind(矩阵的大小,元素的行下标,元素的列下标) %将矩阵指定元素的行、列下标转换成存储的序号 (元素的行下标,元素的列下标) = ind2sub(矩阵大小,元素的存储序号) %将矩阵指定元素的存储序号转换成其行、列下标
-
利用冒号表达式援用子矩阵
A(i,:) %第i行的所有元素 A(:,j) %第j列的所有元素 A(i:i+m,k:k+m) %第i~i+m行内且在k~k+m列中的所有元素 A(i:i+m,:) %第i~i+m行的所有元素 end %示意到开端
-
利用空矩阵删除矩阵中的元素
空矩阵指没有任何元素的矩阵
-
扭转矩阵的形态
reshape(原矩阵,扭转后矩阵的行数,扭转后矩阵的列数) %在矩阵元素不扭转的状况下,将矩阵的元素重排,但元素的存储程序不扭转
-
转化为列向量
A(:) %将矩阵的元素重叠,造成一列列向量
2.6.1MATLAB根本运算
-
算数运算
-
根本算数运算
+ %加 - %减 * %乘 / %右除 \ %左除 ^ %乘方
MATLAB的算数运算是在矩阵意义下进行的
单个数据的运算算是矩阵运算的特例
-
点运算
两个矩阵的点运算指两个矩阵的对应元素进行相干运算
-
-
关系运算
- 关系运算符:
< %小于 <= %小于或等于 > %大于 >= %大于或等于 == %等于 ~= %不等于
-
规定:
- 两个标量的比拟间接比拟大小
- 矩阵的比拟是同下标元素间的比拟,并返回一个矩阵
- 标量与矩阵比拟是标量与矩阵每个元素间的比拟,后果为矩阵
-
逻辑运算
-
逻辑运算符:
& %与 | %或 ~ %非
-
规定:
- 标量间的运算(非0即为真)
- 矩阵之间的运算是逐元素的标量运算
- 矩阵与标量间的运算是矩阵的每个元素与标量间的标量运算
-
2.7.1字符串解决
-
数据的分类
数值型数据
字符型数据
-
字符串的示意
matlab中,字符串是由单引号括起来的字符序列。
字符串中的单引号字符要由两个单引号字符示意。
也能够建设字符串矩阵。
char(数值) %将ascll码矩阵转化为对应的字符串矩阵
-
字符串的比拟
-
关系运算符比拟
两个字符串里的每个字符顺次依照ASCLL值大小一一进行比拟,比拟的后果是个非0即1的数值向量
-
字符串比拟函数
strcmp(s1,s2) %比拟s1与s2是否相等 strncmp(s1,s2) %用于比拟两个字符串前n个字符是否相等 strcmpi(s1,s2) %在疏忽大小写的前提下,比拟两个字符串是否相等 strncmpi(s1,s2) %在疏忽大小写的前提下,比拟两个字符串前n个字符是否相等
-
字符串查找与替换
finder(s1,s2) %返回短字符串在长字符串中的开始地位 strrep(s1,s2,s3) %将字符串中的所有子串s2替换成字符串s3
-
专题三 矩阵解决
3.1.1非凡矩阵
- 矩阵函数
zeros() %产生全0矩阵
ones() %产生全1矩阵
eye() %产生对角线为1的矩阵,当矩阵为方阵时,失去单位阵
rand() %产生(0,1)区间均匀分布的随机矩阵
randn() %产生均值为0,方差为1的规范正太散布矩阵
%单个数值n参数为产生你阶方阵
%双参数m,n时示意产生m * n大小的矩阵
%参数为size(A)示意产生与A同样大小的矩阵
-
专门学科的非凡矩阵
-
魔方阵
n阶魔方阵由[1,\(n^2\)]共\(n^2\)个元素组成,且每行、每列以及主、副对角线上的各n个元素之和都相等
-
范德蒙矩阵
对于向量\(v~=~[v_1,v_2,\dots,v_n]\),范德蒙矩阵的个别模式
- 希尔伯特矩阵
- 随同矩阵
- 帕斯卡矩阵
-
3.2.1矩阵的变换
-
对角阵
-
对角矩阵:只有对角矩阵上有非零元素的矩阵
数量矩阵:对角线上的元素相等的对角矩阵
-
提取对角阵的对角阵元素
diag(矩阵) %提取矩阵A主对角线元素,并产生一个列向量 diag(A,k) %提取矩阵A第k条对角线元素,并产生一个列向量 %主对角线为第零条对角线向上为正,向下为负
-
构建对角矩阵
diag(V) %产生以向量V为主对角线的对角阵 diag(V,k) %产生以向量V为第k条对角线的对角阵
-
-
三角阵
-
上三角阵:矩阵的对角线以下的元素全是0的矩阵
下三角阵:矩阵的对角线以上的元素全是0的矩阵
-
函数
triu(A) %提取A的主对角线及以上元素 triu(A,k) %提取A的第k条对角线及以上元素 tril(A) %提取A的主对角线及以下元素 tril(A,k) %提取A的第k条对角线及以下元素
-
-
矩阵的转置
-
转置运算符
.' %对矩阵转置 ' %对矩阵转置后,对矩阵的每个元素取其复共轭
-
-
矩阵的旋转
rot90(A,k) %将矩阵A逆时针旋转90°的k倍,k为1时省略
-
矩阵的翻转
fliplr(A) %对矩阵A施行左右翻转 flipud(A) %对矩阵A施行高低翻转
-
矩阵的求逆
- 对于一个方阵A,如果存在一个与其同阶的方阵B,使得\(AB=BA=I\)(I为单位矩阵),则称B为A的逆矩阵,当然,A也是B的逆矩阵
-
函数
inv(A) %求方阵A的逆矩阵
3.3.1矩阵求值
-
矩阵的行列式值
- 把方阵看作一个行列式,并对其按行列式的规定求值,这个值就称为方阵所对应行列式的值
-
函数
det(A) %求方阵A所得对应的行列式的值
-
矩阵的秩
- 矩阵线性无关的行数或列数称为矩阵的秩
-
函数
rank(A) %求矩阵A的秩
-
奇数阶魔方阵秩为n,即奇数阶魔方阵为满秩矩阵
一重偶数阶魔方阵秩为\(n/2+2 \)(n是2的倍数,但非4的倍数)
二重偶数阶魔方矩阵的秩为3(n为4的倍数)
-
矩阵的迹
- 矩阵的迹等于矩阵的对角线元素之和,与等于矩阵的特征值之和
-
函数
trace(A) %求矩阵A的迹
-
矩阵的范数
- 矩阵或向量的范数用来度量矩阵或向量在某种意义下的长度
-
罕用范数
-
向量
-
向量V的1—范数:向量元素绝对值之和
公式:\(||V||_1~ =~\sum\limits^n_{i=1}|v_i|\)
norm(V,1) %计算向量V的1—范数
-
向量V的2—范数:向量元素平方和的平方根
公式:\(||V||_2~ =~\sqrt{\sum\limits^n_{i=1}v_i^2}\)
norm(V) %计算向量V的2—范数 norm(V,2) %计算向量V的2—范数
-
向量V的\(\infty\)—范数:所有向量元素绝对值中的最大值
公式:\(||V||_{\infty}~ =~\max\limits_{1 \le i \le n}{|v_i|}\)
norm(V,inf) %计算向量V的∞—范数
-
-
矩阵
-
矩阵A的1—范数:矩阵列元素绝对值之和的最大值
公式:\(||A||_1~ =~\max\limits_{1 \le j \le n} {\sum\limits^m_{i=1}|a_{ij}|}\)
norm(A,1) %计算矩阵A的1—范数
-
矩阵A的2—范数:\(AA’\)矩阵的最大特征值平方根
公式:\(||A||_2~ =~\sqrt{\lambda _1}\)(\(\lambda_1\)为\(AA’\)的最大特征值)
norm(A) %计算矩阵A的2—范数 norm(A,2) %计算矩阵A的2—范数
-
矩阵A的\(\infty\)—范数:所有向量元素绝对值中的最大值
公式:\(||A||_{\infty} ~ =~\max\limits_{1 \le i \le m} {\sum\limits^n_{j=1}|a_{ij}|}\)
norm(A,inf) %计算矩阵A的∞—范数
-
-
-
矩阵的条件数
- 矩阵A的条件数等于A的范数与A的逆矩阵的范数的乘积
- 条件数越靠近于1,矩阵的性能越好,反之,矩阵的性能越差
-
条件数
-
矩阵A的1—范数下的条件数:
cond(A,1) %计算矩阵A的1—范数下的条件数
-
矩阵A的2—范数下的条件数:
cond(A) %计算矩阵A的2—范数下的条件数 cond(A,2) %计算矩阵A的2—范数下的条件数
-
矩阵A的\(\infty\)—范数下的条件数:
cond(A,inf) %计算矩阵A的∞—范数下的条件数
-
3.4.1矩阵的特征值与特征向量
-
矩阵的特征值的数学定义
设A为n阶方阵,如果存在常数\(\lambda\)和n维非0向量x,使得等式Ax=\(\lambda\)x成立,则称\(\lambda\)为A的特征值,x为对应特征值\(\lambda\)的特征向量
-
函数
E = eig(A) %求矩阵A的全副特征值,形成向量E [X,D] = eig(A) %求矩阵A的全副特征值,形成对角阵D,并产生矩阵X,X各列是相应的特征向量
3.5.1稠密矩阵
-
矩阵的存储形式
-
分类
齐全存储形式
稠密存储形式:只存储矩阵非零元素的值及其地位
-
-
稠密矩阵存储形式的产生
-
两种存储形式的转化
A = sparse(S) %将矩阵S转化为稠密存储形式的矩阵A S = full(A) %将矩阵A转化为齐全存储形式的矩阵S
-
建设稠密存储矩阵
sparse(m,n) %生成一个m*n的所有元素都是0的稠密矩阵 sparse(u,v,S) %(其中u,v,S是3个等长的向量,S为要建设稠密矩阵的非零元素,u(i),v(i)别离是S(i)的行和列下标) spconvert(A) %A为一个m*3,m*4的矩阵,其每一行示意一个非零元素,m是非零元素的个数 %A(i,1)示意第i个非零元素所在的行 %A(i,2)示意第i个非零元素所在的列 %A(i,3)示意第i个非零元素值的实部 %A(i,4)示意第i个非零元素值得虚部 %若矩阵全为实数,则无需第4行
-
带状稠密矩阵的稠密存储
-
稠密矩阵类型
无规则构造的稠密矩阵、有规定构造的稠密矩阵
-
-
专题四 程序流程管制
4.1.1程序构造程序
-
程序设计
- 剖析问题,确定求解问题的数学模型或办法
- 设计算法,并画出流程图
- 抉择编程工具,依据算法编写程序
- 调试程序,分析程序输入后果
-
程序的根本构造
- 程序构造
- 抉择构造
- 循环构造
-
程序文件(m文件)
- 脚本文件:能够间接在命令行窗口执行的文件,也叫命令文件
- 函数文件:不能间接执行,必须以函数调用的形式来调用它
-
文件的建设
- 用命令按钮创立文件
- 用edit命令创立文件
-
程序构造
-
数据的输出
A = input(提示信息,选项)
-
数据的输入
disp(输入项)
-
程序的暂停
pause(提早的秒数) %省略秒数,程序期待至键盘有输出后持续运行 %Ctrl+C 强行终止命令
-
4.2.1用if语句实现抉择语句
- 抉择构造又称为分支构造,是依据给定条件是否成立来决定程序的执行流程
-
单分支if语句
if 条件 语句 end %条件: % 1. 条件为标量时,非零示意条件成立,零示意条件不成立 % 2. 条件为矩阵时,如果矩阵为非空,且不包含零元素,则条件成立,否则不成立 %eg:[1,2;0,4]示意条件时,条件不成立;[1,2;3,4]示意条件时,条件成立
-
双分支if语句
if 条件 语句组1 else 语句组2 end
-
多分支if语句
if 条件1 语句组1 elseif 条件2 语句组2 ··· elseif 条件n-1 语句组n-1 else 语句组n end %多分支if语句中不论有几个分支,程序执行完一个分支后,其余分支将不会再执行,这时整个if语句完结
4.3.1用switch语句实现抉择构造
switch 表达式
case 后果表1
语句组1
case 后果表2
语句组2
···
case 后果表n-1
语句组n-1
otherwise
语句组n
end
%仅执行一条语句
%switch表达式应该是一个能够列举其值的表达式
%case后果表为switch表达式的取值,当取值有多个时,利用单元数据表示(用大括号括起来,相似列表的列举)
4.4.1用for语句实现循环构造
- 循环构造又称为反复构造,是利用计算机估算速度快以及能进行逻辑管制的特点来反复执行某些操作
-
格局1:
for 循环变量=表达式1(初值):表达式2(步长):表达式3(终值) 循环体语句 end %for循环的次数取决于循环变量后的向量中的元素个数 %推出循环后,循环变量的值就是向量中最初的元素值 %向量为空时,循环体一次也不执行
格局2:
%for语句的循环变量也能够是一个列向量 for 循环变量=矩阵表达式 循环体语句 end
4.5.1用while语句实现循环构造
-
格局:
while 条件 循环构造 end %多用于循环次数不确定的状况,循环次数确定时for语句更不便
-
循环管制语句
break %用来跳出循环体,完结整个循环 continue %用来完结本次循环,去执行下次循环
-
循环的嵌套
- 如果一个循环构造的循体又蕴含一个循环构造,就称为循环的嵌套,或称为多重循环构造
4.6.1函数文件的定义与调用
-
定义的根本构造:
function 输入形参表=函数名(输出形参表) 正文阐明局部 函数体语句 %当有多个形参时,形参之间用逗号分隔,组成形参表 %当输入形参多于一个时,该当用方括号括起来形成输入矩阵 %函数文件名通常由函数名加上扩展名.m组成 %return语句示意函数的返回值,但函数也会主动返回
-
调用的格局
[输入实参表] = 函数名(输出实参表) %在调用函数时,函数输入输出参数称为理论参数,简称实参
-
匿名函数
函数句柄变量 = @(匿名函数输出参数)匿名函数表达式 eg:f = @(x,y)x^2+y^2
-
给函数起别名
函数句柄名 = @函数名
4.7.1函数的递归调用
-
函数的嵌套调用
在一个函数外部调用了其余函数
-
函数的递归调用
-
一个函数调用它本身称为函数的递归调用
递归是将一个大型的简单问题层层转化为一个与原问题类似的规模较小的问题来求解
-
递归模式
-
间接递归调用
间接调用本身
-
间接递归调用
先调用另一个函数,再由这个函数调用本身
-
-
4.8.1函数参数与变量曲线
-
函数参数的可调性
nargin %记录函数的输出实参个数 nargout %记录函数的输入实参个数
-
-
定义:
==局部变量==是指在程序中只在特定过程或函数中能够拜访的变量
==全局变量==的作用域是整个MATLAB工作空间,即全程无效,所有的函数都能够对它进行存取和批改
-
定义格局:
%全局变量 global 变量名
-
专题五 MATLAB绘图
5.1.1二维曲线
-
plot函数
-
根本用法
plot(x,y) %x,y别离用来存储x坐标和y坐标数据 plot(x) %若x为实数向量时,x的下标为x坐标,向量值为y坐标 %若x为复数向量时,则实部为x坐标,虚部为y坐标
plot(x,y) %如果矩阵y的列数等于向量x的长度,则以x为横坐标,以y的每个行向量为纵坐标绘制曲线,曲线的条数等于y的行数 %如果矩阵y的行数等于向量x的长度,则以x为横坐标,以y的每个列向量为纵坐标绘制曲线,曲线的条数等于y的列数
plot(x,y) %x,y为同行矩阵时,以x,y对应元素为横、纵坐标绘制曲线,曲线的条数等于矩阵的列数
-
绘图的外观批改
plot(x,y,外观参数)
-
可选参数
-
线型
"-" :实线 ":" :虚线 "-.":点画线 "--":双画线
-
色彩
"r" : 红色 "g" : 绿色 "b" : 蓝色 "w" : 红色 "k" : 彩色 ······
-
数据点标记
"*" : 星号 "o" : 圆圈 "s" : 方块 "p" : 五角星 "^" : 朝上三角符号 ······
-
-
-
-
fplot函数
-
根本用法
fplot(f,lims,外观参数) %f代表一个函数,通常采纳函数句柄的模式。lims为x轴的取值范畴,要用二元向量[xmin,xmax]形容,默认值为[-5,5]。可选的外观参数与plot雷同 %f的地位能够传入两个参数方程,用以绘制参数方程对应的曲线
-
5.2.1 绘制图形的辅助操作
-
图形标注
-
title函数
title(图形题目,属性名,属性值) %图形题目的参数为字符串(反对LaTeX格局控制符) %color属性:用于设置图形题目文本的色彩,默认为黑 %FontSize属性:用于设置题目文字的字号,默认为11
-
xlabel函数与ylabel函数
xlabel(x轴阐明) ylabel(y轴阐明) %阐明的参数为字符串(反对LaTeX格局控制符)
-
text函数与gtext函数
text(x,y,阐明) gtext(阐明)
-
legend函数
legand(图例1,图例2,···) %图形右上角对各个曲线的阐明
-
-
坐标管制
-
axis函数(坐标轴管制)
axis([xmin,xmax,ymin,ymax,zmin,zmax]) %零碎依据6个值确定图形的坐标轴范畴 axis equal %纵横坐标轴采纳等长刻度 axis square %产生正方形坐标系 axis auto %应用坐标轴的默认设置 axis off %勾销坐标轴 axis on %显示坐标轴
-
grid函数(网格管制)
grid on %显示网格线 grid off %暗藏网格线 grid %在显示与暗藏之间切换
-
box函数(边框管制)
box on %显示边框 box off %暗藏边框 box %在显示与暗藏之间切换
-
-
图形放弃
-
hold函数(图形窗口刷新管制)
hold on %保留绘制的图形 hold off %下次绘制图形时,清空之前的图形 hold %在两个状态之间切换
-
-
图形窗口的宰割
- 子图:同一图形窗口中的不同坐标系下的图形
-
subplot函数
subplot(m,n,p) %将图形窗口分成m*n个绘图区,p指定以后活动区序号(区号按行优先编号) %在窗口不抵触的状况下,实践上能够宰割成任意大小的图形
5.3.1其余模式的二维图形
-
其余坐标系下的二维图形
-
对数坐标图
semilogx(x1,y1,图形参数1,x2,y2,图形参数2,···) %将x换为对数刻度,而y为线性刻度 semilogy(x1,y1,图形参数1,x2,y2,图形参数2,···) %将y换为对数刻度,而x为线性刻度 loglog(x1,y1,图形参数1,x2,y2,图形参数2,···) %x,y全换成对数刻度
-
极坐标图
polar(theta,rho,图形参数) %thera为极角,rho为极半径,图形参数与plot函数雷同
-
-
统计图
-
条形类图形
-
条形图
bar(x,y,style) %参数y是数据,选项style用于指定分组排列模式,参数x用以存储横坐标 %"grouped" : 簇状分组 %"stacked" : 沉积分组
-
直方图
hist(y,x) %参数y是数据,x用于指定区间的划分形式 %x为标量时,均分为x块,若x为向量时,x中的每个数为指定分组的核心值,x的个数为分组数 rose(theta,x) %绘制极坐标系下的直方图
-
-
面积类图形
-
扇形统计图
pie(x,explode) %x存储带统计数据,explode管制图块的显示模式
-
面积统计图
area(x,y,外观参数) %与plot类似,不过将下方数据填充色彩
-
-
散点类图形
-
散点图
scatter(x,y,图形参数,'filled') %参数x,y用于定位数据点,图形参数能够管制图形的线型、色彩、数据点标记 %"filled" 示意填充数据点标记,缺省时,数据点标记为空心
-
阶梯图
stairs(x,y,图形参数,'filled') %参数x,y用于定位数据点,图形参数能够管制图形的线型、色彩、数据点标记 %"filled" 示意填充数据点标记,缺省时,数据点标记为空心
-
杆图
stem(x,y,图形参数,'filled') %参数x,y用于定位数据点,图形参数能够管制图形的线型、色彩、数据点标记 %"filled" 示意填充数据点标记,缺省时,数据点标记为空心
-
-
矢量图
-
罗盘图
compass(x,y,u,v) %(x,y)指定矢量终点,(u,v)指定矢量起点
-
羽毛图
feather(x,y,u,v) %(x,y)指定矢量终点,(u,v)指定矢量起点
-
箭头图
quiver(x,y,u,v) %(x,y)指定矢量终点,(u,v)指定矢量起点
-
-
5.4.1三维曲线
-
plot3函数
plot3(x1,y1,z1,图形参数1,x2,y2,z2,图形参数2,··· ,xn,yn,zn,图形参数3) %x,y,z为向量时,对应绘制曲线 %x,y,z为矩阵时,先以列向量绘制曲线 %每组x,y,z向量都形成一组数据点的坐标
-
fplot3函数
fplot3(funx,funy,funz,tlims) %其中,funx、funy、funz代表定义曲线x,y,z坐标的函数,通常采纳函数句柄的模式。tlims为参数函数自变量的取值范畴,用二元向量[tmin,tmax]形容,默认为[-5,5]
5.5.1三维曲面
-
立体网格数据的生成
- 利用矩阵运算生成
-
利用meshgrid函数生成
[X,Y] = meshgrid(x,y); %参数x,y为向量,存储网格点坐标的X,Y为矩阵
-
绘制三维曲面的函数
-
mesh函数(绘制网格图)
mesh(x,y,z,c) %其中,x,y为网格坐标矩阵,z为网格点上的高度矩阵,c用于指定在不同高度下的曲面色彩 mesh(z,c) %x,y省略时,z矩阵的第2维下标当作x轴坐标,z矩阵的第1维下标当作y轴坐标 meshc(x,y,z,c) %带等高线的三维网格曲面函数 meshz(x,y,z,c) %带底座的三维网格曲线函数
-
surf函数(绘制平面图)
surf(x,y,z,c) %其中,x,y为网格坐标矩阵,z为网格点上的高度矩阵,c用于指定在不同高度下的曲面色彩 surf(z,c) %x,y省略时,z矩阵的第2维下标当作x轴坐标,z矩阵的第1维下标当作y轴坐标 surfc(x,y,z,c) %具备等高线的曲面函数 surfl(x,y,z,c) %具备光照成果的曲面函数
-
-
规范三维曲面
-
sphere函数(绘制球面)
[x,y,z] = sphere(n) %n用于指定球面的圆滑水平
-
cylinder函数
[x,y,z] = cylinder(R,n) %n用于指定曲面的圆滑水平 %R为向量,用于寄存等距离高度上的半径 %R为标量时,生成圆柱面
-
peaks函数
\(f(x,y)~=~3(1-x^2)e^{-x^2-(y+1)^2}-10(\dfrac x5-x^3-y^5)e^{(-x^2-y^2)}-\dfrac 13 e^{(x+1)^2-y^2}\)
peaks(n) %生成n阶的方阵 peaks(V) %带入到向量或坐标的表达式 peaks(x,y) %带入到向量或坐标的表达式 peaks %默认生成49阶方阵
-
5.6.1图形的润饰解决
-
视点解决
-
方位角:视点与原点连线在xoy上的投影与y轴负方向造成的角度
仰角:视点与原点连线与xoy立体造成的角度
-
设置视点函数
view(az,el) %az为方位角,le为仰角(以度(°)为单位) view(x,y,z) %x,y,z示意视点在笛卡尔坐标中的地位 view(2) %从2维立体察看图形 view(3) %从3维空间察看图形
-
-
色调解决
-
色彩的向量示意
[R,G,B] %R 红,G 绿,B 蓝
-
色图
- 色图矩阵
-
内建色图
parula %默认色图 jet % hsv % hot %寒色图 cool %冷色图 spring %秋季色图 summer %冬季色图 autumn %秋季色图 winter %夏季色图 gray %灰色图 bone % copper %
colormap(cmap) %指定以后图形应用的色图 %能够自定义色图矩阵,也能够调用MATLAB提供的函数来定义色图矩阵
-
三维图形外表的着色
shading facted %将每个网格片用其高度对应的色彩进行着色,网格线是彩色 shading falt %将每个网格片用其高度对应的色彩进行着色,网格线也用相应的色彩着色 shading interp %在网格片内用色彩插值进行解决
-
-
剪裁解决
- 将图形中须要裁剪的局部设置为NaN,在绘制图形时函数值为NaN的局部将不显示进去,从而达到对图形进行裁剪的目标
5.7.1交互式绘图工具
- “绘图”选项卡
-
图形窗口绘图工具
- “显示绘图工具和停泊图形”
plottools %显示绘图工具和停泊图形 按钮
-
绘图工具的组成
-
图形选项板
- 新子图面板
- 变量面板
- 正文面板
- 绘图浏览器
-
属性编辑器
- 曲线属性编辑器
- 坐标系属性编辑器
- 图形窗口属性编辑器
-
- 图形窗口菜单和工具栏
专题六 数据分析与多项式计算
6.1.1数据统计分析
-
求极值元素
-
max函数
-
当函数参数为向量时
y = max(X) %返回向量X的最大值,若X中含有复数,则返回模最大值 [y,k] = max(X) %返回向量X的最大值存入y,最大元素的序号存入k,若X中含有复数,则返回模最大值
-
当函数参数为矩阵时
max(A) %返回一个行向量,向量的第i个元素是矩阵A的第i列上的最大值(即返回每列的最大值,并生成一个向量) [Y,U] = max(A) %返回行向量Y和U,Y向量记录每列的最大值,U向量记录每列最大值元素的行号 max(A,[],dim) %dim取1时,函数性能与max(A)统一;dim取2,函数返回列向量(即返回每行的最大值,并生成一个列向量)
-
-
min函数
-
当函数参数为向量时
y = min(X) %返回向量X的最小值,若X中含有复数,则返回模最小值 [y,k] = min(X) %返回向量X的最小值存入y,最小元素的序号存入k,若X中含有复数,则返回模最小值
-
当函数参数为矩阵时
min(A) %返回一个行向量,向量的第i个元素是矩阵A的第i列上的最小值(即返回每列的最小值,并生成一个向量) [Y,U] = min(A) %返回行向量Y和U,Y向量记录每列的最小值,U向量记录每列最小值元素的行号 min(A,[],dim) %dim取1时,函数性能与min(A)统一;dim取2,函数返回列向量(即返回每行的最小值,并生成一个列向量)
-
-
-
求均值与中值
-
均值:指算数平均值,即每项数据之和除以数据项数
mean() %求算数平均值
-
中值:指在数据按递增或递加的顺序排列后,位于两头的一个数或是位于两头的两个数的平均值
median() %求中值
-
-
求和与求积
sum() %求和 prod() %求积
-
累加与累乘积
-
设\(U = (u_1,u_2,u_3,···,u_n)\)是一个向量,V、W是与U等长的另外两个向量,并且 \(V = ( \sum\limits^1_{i=1}u_i,\sum\limits^2_{i=1}u_i,\sum\limits^3_{i=1}u_i,···,\sum\limits^n_{i=1}u_i)\), \(W = ( \prod\limits^1_{i=1}u_i,\prod\limits^2_{i=1}u_i,\prod\limits^3_{i=1}u_i,···,\prod\limits^n_{i=1}u_i)\),
则别离称V、W为U的累加和向量和累加积向量
cumsum() %累加和向量 cumprod() %累加积向量
-
-
求标准差与相关系数
- 标准差
\(S_1 = \sqrt{\dfrac1{N-1}\sum\limits^N_{i=1}(x_i-\bar x)^2}\) 或 \(S_2 = \sqrt{\dfrac1{N}\sum\limits^N_{i=1}(x_i-\bar x)^2}\)
\(S_1\)样本标准差 \(S_2\)总体标准差
std(X) %计算向量X的标准差 std(A) %计算矩阵A的各列的标准差 std(A,flag,dim) %flag取0时,计算样本标准差;flag取1时,计算总体标准差
-
相关系数
- 相关系数:反馈两组数据序列之间的互相关系
- 计算公式: \(r =\dfrac{\sum(x_i-\bar x)(y_i-\bar y)}{\sqrt{\sum(x_i-\bar x)^2\sum(y_i-\bar y)^2}}\)
-
调用格局
corrcoef(A) %返回由矩阵A所造成的一个相关系数矩阵,其中,第i行第j列的元素示意原矩阵中第i列和第j列的相关系数
-
排序
sort(X) %对向量X进行升序排列 [Y,I] = sort(A,dim,mode) %dim指明排序对象(对列还是对行)mode取“ascend”,则为升序;取“descend”,则为降序 %输入参数Y是排序后的矩阵,I记录Y元素在A中的地位
6.2.1多项式计算
-
多项式的示意
-
在MATLAB中 n 次多项式用一个长度为n+1的行向量来示意
如有n次多项
\(p(x) = a_nx^n+a_{n-1}x^{n-1}+a_{n-2}x^{n-2}+···+a_1x+a_0\)
示意为 \([a_n,a_{n-1},a_{n-2},···,a_1,a_0]\)
-
注意事项
- 多项式系数向量的程序为从高到低
- 多项式系数向量蕴含0次项系数
- 没有的项,其多项式系数向量对应地位利用0补足
-
-
多项式的四则运算
- 加减运算:对应向量的加减
-
乘除运算:
conv(P1,P2) %多项式相乘函数 [Q,r] = deconv(P1,P2) %多项式相除函数,Q返回P1除P2的商式,r返回余式
-
多项式的求导
p = polyder(P) %求多项式P的导函数向量 p = polyder(P,Q) %求P·Q的导函数 [p,q] = polyder(P,Q) %求P/Q的导函数,导函数的分子存入p,分母存入q
-
多项式的求值
polyval(p,x) %代数多项式求值 %p为多项式系数向量;x能够是标量、向量或矩阵。若x为标量则求多项式在该点的值;若x为向量或矩阵,则对向量或矩阵的每一个元素求多项式的值 polyvalm(p,x) %矩阵多项式求值 %要求x必须为方阵,以方阵为自变量求值
-
多项式的求根
root(p) %多项式求根函数 ploy(x) %已知根求多项式
6.3.1数据插值
- 数据插值能够依据无限个点的取值情况,正当估算出左近其余点的取值,从而节约大量的试验和测试资源,节俭大量的人力、物力和财力。
-
一维插值
- 函数
Y1 = interp1(X,Y,X1,method) %一维差插值凹函数 %依据X、Y的值,计算函数在X1处的值。X、Y是两个等长的已知向量,别离示意采样点和采样值。X1是一个向量或标量,示意要插值的点。
-
插值办法(用来填入method中)
-
linear:线性插值,默认办法
将与插值点凑近的两个数据点用直线连贯,而后在直线上选取对应插值点的数据。
-
nearest:最近点插值
选取最近样本点的值作为插值数据。
-
pchip:分段3次埃尔米特插值
采纳分段三次多项式,除满足插值条件,还需满足在若干节点处相邻段插值函数的一阶导数相等,使得曲线润滑的同时,还具备保形性。
-
spline:3次样条插值
每个分段内结构一个三次多项式,使其插值函数除满足插值的条件外,还要求在各节点处具备间断的一阶和二阶导数
-
-
二维插值
-
函数
Z1 = interp2(X,Y,Z,X1,Y1,method) %二维插值函数 %其中,X、Y是两个向量,示意两个参数的采样点,Z为采样点对应的函数值。X1、Y1是两个标量或向量,示意要插值的点。
-
6.4.1曲线拟合
-
曲线拟合的原理
- 曲线拟合也是一种函数迫近的办法
-
最小二乘法
通过最小化误差的平方和来寻找数据的最佳函数匹配
设\(p(x)\)是一个多项式函数
且\(\sum\limits^n_{i=1}(p(x_i)-y_i)^2\)的值最小,
则\(p(x)\)为原函数\(y = f(x)\)的迫近函数
-
函数
P = polyfit(X,Y,m) %多项式拟合函数 [P,S] = polyfit(X,Y,m) [P,S,mu] = polyfit(X,Y,m) %由样本数据X、Y,产生一个m次的多项式P及其在采样点误差数据S,mu为一个二元向量,mu(1)是X的平均值,mu(2)是X的标准差
专题七
7.1.1数值微分与数值积分
-
数值微分
-
数值差分与差商
-
数值差分
- 向前差分:\(\bigtriangleup f(x_0) = f(x_0+h)-f(x_0)\)
- 向后差分:\(\bigtriangledown f(x_0) = f(x_0)-f(x_0-h)\)
- 核心差分:\(\delta f(x_0) = f(x_0+\frac h2)-f(x_0-\frac h2)\)
-
数值差商
任意函数\(f(x)\)在\(x_0\)点的导数是通过极限定义的
向前差商:\(f'(x_0)\approx \lim\limits_{h\to 0}\dfrac{f(x_0 + h) – f(x_0)}h\)
向后差商:\(f'(x_0)\approx \lim\limits_{h\to 0}\dfrac{f(x_0) – f(x_0-h)}h\)
核心差商:\(f'(x_0)\approx \lim\limits_{h\to 0}\dfrac{f(x_0 + \frac h2) – f(x_0- \frac h2)}h\)
-
-
数值微分的实现
dx = diff(x) %计算向量x的一阶向前差分,dx(i) = x(i-1)-x(i),i=1,2,···,n-1 dx = diff(x,n) %计算向量x的n阶向前差分 dx = diff(A,n,dim) %计算矩阵A的n阶差分,dim取1时,按列计算差分,dim取2时,按行计算差分
-
-
数值积分
-
数值积分的基本原理
-
牛顿—莱布尼茨公式:
\(\large {\int}_a^bf(x)dx = F(b)-F(a)\)
- 将积分区间分为若干子区间,求每个区间的近似积分,其和为定积分的近似值
-
-
数值积分的实现(一重积分)
[l,n] = quad(filename,a,b,tol,trace) %基于自适应辛普森办法 [l,n] = quad(filename,a,b,tol,trace) %基于自适应Gauss-Lobatto办法 l = integral(filename,a,b) %基于全局自适应积分办法(能够求无穷积分) [l,err] = quadgk(filename,a,b) %基于自适应高斯—克朗罗德办法(能够求振荡积分,积分上上限能够为复数) l = trapz(x,y) %基于梯形积分法 %filename为被积函数名;a,b为定积分的下限和上限;tol管制积分精度,默认为10e06;trace管制是否展示积分过程 %参数l即定积分的值,n为被积函数调用的次数
-
多重定积分的数值求解
-
求二重积分的数值解:\(\int_c^d\int_a^bf(x,y)dxdy\)
l = integral2(filename,a,b,c,d) l = quad2d(filename,a,b,c,d) l = dblquad(filename,a,b,c,d)
-
求三重积分的数值解:\(\int_e^f\int_c^d\int_a^bf(x,y,z)dxdydz\)
l = integral3(filename,a,b,c,d,e,f) l = triplequad(filename,a,b,c,d,e,f,tol)
-
-
7.2.1线性方程组求解
-
线性方程组的间接解法
-
利用左除运算符的间接解法(列主元消去法)
不用求逆后,再用乘法,能够间接用左除运算
-
利用矩阵合成求线性方程组
-
LU合成(合成为上三角和下三角矩阵)
[L,U] = lu(A) %产生一个上三角阵U和一个变换模式的下三角矩阵L,使之满足A=LU。A必须为方阵 [L,U,P] = lu(A) %产生一个上三角阵U和一个下三角矩阵L以及一个置换矩阵P,使之满足PA=LU。A必须为方阵
\(x = U/(L/b)\)或\(x = U/(L/P*b)\)
- QR合成
- Cholesky合成
-
-
-
迭代法
-
雅可比迭代法
\( D = \begin{bmatrix}a_{11}& & & \& a_{22} & & \& & \ddots & \& & & a_{nn} \\end{bmatrix} \),\(L = -\begin{bmatrix} 0 & & & \ a_{21} & 0 & & \ \vdots & \ddots & \ddots & \ a_{n1} & \dots & a_{n,n-1} & 0 \ \end{bmatrix}\),\(U = \begin{bmatrix} 0 & a_{12} & \dots & a_{1n} \ & 0 & \ddots & \vdots \ & & \ddots & a_{n-1,n} \ & & & 0 \ \end{bmatrix}\)
求解公式为\(x = D^{-1}(L+U)x+D^{-1}b\)
对应的迭代公式为\(x^{[k+1]} = D^{-1}(L+U)x^{[k]}+D^{-1}b\)
-
高斯—赛德尔迭代法
迭代公式\(x^{[k+1]} = (D-L)^{-1}Ux^{[k]} + (D-L)^{-1}b \)
-
7.3.1非线性方程求解与函数极值计算
-
非线性方程组求解
-
单变量非线性方程求解
x = fzero(filename,x0) %filename为待求根方程左端的函数表达式,x0为初始值
- 非线性方程组的求解
x = fsolve(filename,x0,option) %x为返回的近似值,filename为待求根方程左端的函数表达式,x0是初值,option用于设置优化工具箱的优化参数,能够调用optimset函数实现
-
-
函数极值的计算
-
无约束最优化问题
-
个别形容:
\(\min\limits_x f(x)~~~x = [x_1,x_2,···,x_n]^T\)
- 求最小值的函数:
[xmin,fmin] = fminbnd(filename,x1,x2,option) [xmin,fmin] = fminsearch(filename,x0,option) [xmin,fmin] = fminunc(filename,x0,option) %filename是定义的指标函数。x1、x2示意被钻研区间的左、右边界。x0是一个向量,示意极值点的初值。option为优化参数,能够通过optimset函数来设置
-
-
有束缚最优化问题
-
个别形容
\(\min\limits_{x~s.t.G(x)<0}f(x)~~~x = [x_1,x_2,···,x_n]\)
-
约束条件的细化
- 线性不等式束缚
- 线性等式束缚
- 非线性不等式束缚
- 非线性等式束缚
- X的上界与下界
-
函数:
[xmin,fmin] = fmincon(filename,x0,A,b,Aeq,beq,lbnd,Ubnd,NonF,option) %filename是定义的指标函数,x0是一个向量,示意极值点的初值。option为优化参数,能够通过optimset函数来设置 %其余参数为约束条件,若约束条件不存在,则填入空矩阵
-
-
7.4.1常微分方程数值求解
-
个别概念
-
概念
常微分方程的初值问题就是寻找函数\(y(t)\)使之满足如下方程:
\(y’ = f(t,y),t_0 \in [t_0,b] ~~~~\)
\(y(t_0) = y\)
数值解法,就是求\(y(t)\)在离散结点\(t_0\)处的函数近似值办法,\(y_n=y(x_n)\)
-
分类
-
单步法(像只与前一个参量相干的递归)
在计算\(y_{n+1}\)时只用到前一步的\(y_n\),因而在有了初值之后就能够逐渐向下计算,代表:龙格—库塔法
-
多步法
在计算\(y_{n+1}\)时,除了用到前一步的\(y_n\)之外,还要用到\(y_{n-p}\)的值,代表:亚当斯法
-
-
-
求解函数
[t,y] = solver(filename,tspan,y0,option) %t和y别离给出工夫向量和相应的数值解;solver为求常微分方程数值解的函数;filename是定义f(t,y)的函数名,该函数必须返回一个列向量;tspan模式为[t0,tf],示意求解区间;y0是初始状态向量;option是可选参数,用于设置求解属性 %常微分方程求解函数存在对立命名格局 %······
发表回复