注意 #
- matlab中所有命令和函数都用小写字母表示
变量 #
-
变量的存取
//**********格式1 S = load('文件名','格式','变量名') //从内存到硬盘的存储 save('文件名','格式','变量名') //从硬盘到内存的存储 //***********格式2 load 文件名 变量名 save 文件名 变量名
-
变量的清除
clear 变量名; clear 变量1 变量2 ; clear all //从内存删除 ///******* delete //从硬盘删除
-
变量的检查
who //显示前面用过的变量 whos //显示前面用过的变量及其详细特征
数组 #
-
一维数组(向量)
a = [1;2;3;4] //生成列向量 b = [1,2,3,4] //行向量 c = [1 2 3 4] //行向量
-
冒号生成法
产生递增或递减的等差数列
格式:
初值:步长:终值
a = 1:2:6 // b = 1:6 //步长是1时可以省略
-
定数线性采样法
用于产生于两点之间的n个数据点
格式
x = linespace(a,b,n)
n的默认值是100 -
拼接法
行向量拼接
a3 = [a1,a2]
用方括号和逗号列向量拼接
b3 = [b1;b2]
用方括号和分号向量抽取
a3 = a3(1:2:end)
抽取a3中奇数位置的数组成新的数组
元素的提取用圆括号和索引号
a3 = A(3)
-
-
二维数组(矩阵)
- 直接输入法
- 利用函数创建矩阵
- 全一矩阵
ones()
- 全零矩阵
zero()
- (0,1)区间均匀分布的随机矩阵
rand()
- 单位矩阵
eye()
- 均值为0,方差为一的标准正态随机分布矩阵
randn()
- 全一矩阵
a(i,j)提取i行j列元素
- 一维数组和子矩阵的获得
- 提取第j列的所有元素
A(:,j)
- 提取第i行的所有元素
A(i,:)
- 提取第k~k+m列的所有元素
A(:,k:k+m)
- 提取第j列的所有元素
绘图 #
二维曲线 #
plot(x,y)
#
-
当y省略,以x的下标(1,2,3,4..)为行向量,x的值为列向量绘制
-
当x为复数向量,以实部和虚部为横纵坐标绘制
-
x为向量,y为矩阵,
若y的列数等于x的长度,以x为横坐标,y的每个行向量为纵坐标绘制,曲线条数为y的行数
若y的行数等于x的长度,则以y的列向量为纵坐标
-
x,y同型矩阵,以x,y对应列元素为横纵坐标绘制,曲线条数为矩阵列数
-
plot(x1,y1,x2,y2,...,xn,yn)
每个向量对构成一组数据点的横纵坐标
plot(x,y,选项)
#
线型 -
实线 :
虚线 -.
点划线 --
双划线
颜色 r
g
b
w
k
数据点标记 *
星号 o
圆圈 s
方块 p
五角星 ^
朝上三角符
fpolt(f,lims,选项)
#
f为函数,lims为x轴的取值范围,二元行向量,默认[5,5]
辅助操作 #
title(图形标题) |
图形标题 | 如果两行,title({'第一行','第二行'}) |
xlabel(x轴说明) |
x轴说明 | |
ylabel(y轴说明) |
y轴说明 | |
text(x,y,图形说明) |
在坐标(x,y)处添加图形说明 | |
legend(图例1,图例2,..) |
图例 | |
axis([xmin,xmax,ymin,ymax,zmin,zmax]) |
设置坐标轴范围 | axis equal 横纵坐标采用等长刻度axis square 产生正方形坐标系(默认矩形)axis auto 使用默认设置axis off 取消坐标轴axis on 显示坐标轴 |
grid |
网格边框 | grid on grid off grid 切换 |
hold |
图形保持 | hold on hold off 刷新hold 切换两种模式 |
subplot(m,n,p) |
图形窗口分割为m行n列,p指定当前活动区 |
-
对数坐标图 #
semilogx(x1,y1,选项1,x2,y2,选项2,...) //x轴为常用对数刻度,y轴保持线性刻度 semilogy(x1,y1,选项1,x2,y2,选项2,...) loglog(x1,y1,选项1,x2,y2,选项2,...)
-
极坐标图 #
polar(theta,rho,选项) //theta极角,rho极径,选项同plot
-
统计类 #
-
条形图 #
bar函数 垂直条形图
barh函数 水平条形图
bar(y,style)
,y为数据,style指定分组排列模式:‘grouped’簇状分组(默认),‘stacked’堆积分组bar(x,y,style)
x横坐标,y数据 -
直方图 #
hist函数 直角坐标系
rose函数 极坐标系
hist(y,x)
y为统计数据,x指定区间划分形式,缺省默认按10等分区间rose(theta,x)
theta向量确定每一区间与圆点角度,x缺省默认按20个等分区间 -
面积类 #
扇形 pie函数
pie(x,explode)
x数据,explode控制图块显示模式(缺省时饼图为一个整体)面积 area函数
-
散点类 #
scatter函数 散点图
stairs函数 阶梯图
stem函数 杆图
-
矢量类 #
compass函数 罗盘图
feather函数 羽毛图
quiver函数 箭头图
-
三维曲线 #
三维曲面 #
-
平面网格数据生成 #
-
利用矩阵运算生成
x=2:6; y=(3:8)'; X=ones(size(y))*x; Y=y*ones(size(x));
-
利用
meshgrid
函数生成[X,Y]=meshgrid(x,y); #x,y为向量,X,Y矩阵存储网格点坐标
-
-
绘制三维曲面的函数 #
mesh(x,y,z,c); surf(x,y,z,c); #x,y为网格坐标矩阵,z为网格点上的高度矩阵,c指定不同高度的曲面颜色
meshc
surfc
带等高线meshz
带底座surfl
有光照效果fsurf(funx,funy,funz,uvlims)
fmesh(funx,funy,funz,uvlims)
uvlims默认为[-5,5,-5,5] -
标准三维曲面 #
sphere
函数:三维球面[x,y,z]=sphere(n)
,n决定球面圆滑程度,默认20cylinder
函数:三维柱面[x,y,z]=cylinder(R,n)
R存放柱面各登剑阁高度上的半径,n个间隔点peaks
函数:生成绘图数据矩阵
数据统计分析 #
相关函数 #
prod() |
求积 | |
sum() |
求和 | |
cumsum() |
累加和 | |
cumprod() |
累加积 | |
std() |
标准差函数 | 可计算样本标准差或总体标准差 |
corrcoef() |
相关系数函数 | |
sort() |
排序 | 默认升序 |
多项式计算 #
多项式系数向量次数由高到低
conv(P1,P2) |
多项式乘法 | |
[Q,e]=deconv(P1,P2) |
多项式除法 | Q商式,r余式 |
polyder() |
多项式求导函数 | |
polyval(p,x) |
代数多项式求值 | 点运算 |
polyvalm(p,x) |
矩阵多项式求值 | 矩阵运算 |
roots(p) |
多项式求根 | |
poly() |
已知多项式全部根,建立多项式 |
数据插值 #
Y1=interp1(X,Y,X1,method)
一维插值函数,根据X和Y的值计算X1处的值并储存在Y1中
method | ||
---|---|---|
linear | 线性插值,默认 | |
nearest | 最近点插值 | 选择最近样本点的值,中点取后一点的值 |
pchip | 分段3次埃尔米特插值 | |
spline | 3次样条插值 |
Z1=interp2(X,Y,Z,X1,Y1,method)
二维插值函数,不支持pchip
曲线拟合 #
poltfit()
建立多项式函数去逼近样本数据(求得最小二乘拟合多项式的系数)
微积分与方程求解 #
数值微分与数值积分 #
向前差分函数 diff()
数值积分[l,n]=quad(filename,a,b,tol,trace)
和quadl
filename被积函数名,[a,b]积分限必须有限,不能无穷大,tol控制积分精度,默认10^-6^,trace控制是否展现积分过程,默认0不展现,l定积分的值,n为被积函数调用次数
l=integral(filename,a,b)
基于全局自适应积分方法
[l,err]=quadgk(filename,a,b)
基于高斯-克朗罗德方法
err返回急死误差范围,积分上下限可以是无穷大,也可以是复数
l=trapz(x,y)
基于梯形积分法,向量x,y定义函数关系,积分限x1到xn
integtal2
quad2d
dblquad
二重积分
integral3
triplequad
三重积分
符号计算 #
符号对象 #
符号计算结果为精确的数学表达式,数值计算是一个数值
evls
将符号转化为数值
sym
建立单个符号变量
syms
建立多个符号变量
assume
对符号对象设置值域
-
assume(condition)
指定变量满足条件conditon -
assume(expr,set)
指定表达式expr属于集合setsyms x; assume(x,'positive'); abs(x)==x #x为正数,所以abs(x)的值为x
关系运算
< lt() <= le() > gt() >= ge() == eq() ~= ne()
逻辑运算
& | ~ and(a,b) or(a,b) not(a) xor(a,b)
因式分解与展开运算
factor(s)
对符号表达式x分解因式expand(s)
对符号表达式s进行展开collect(s)
对符号表达式s合并同类项collect(s,v)
对符号表达式s按变量v合并同类项
其他运算
提取有理分式的分子分母 [n,d]=numden(s)
提取符号表达式的系数 c=coeffs(s,x)
符号表达式化简 simplify(s)
符号多项式转化为多项式系数向量 p=sym2poly(s)
相反 s=polu2sym(p)
查找符号表达式中的符号变量 symvar(s,n)
返回表达式s中的n个符号变量,可用symvar(x,1)
查找表达式s的主变量
符号微积分 #
limit(f,x,a)
求函数f关于变量x在a点的极限
limit(f,x,a,‘right’)
求单边极限
diff(f,x,n)
求函数f关于变量x的n阶导数,n默认1
int(f,x)
求函数f对变量x的不定积分
int(f,x,a,b)
定积分,a,b表上下限,inf
返回广义积分
级数 #
symsum(s,v,n,m)
无穷级数求和,s表级数通项,v是求和变量,省略时使用系统默认变量,n,m为v的初值和末值
taylor(f,v,a,Name,Value)
将函数f按变量v在a点展开泰勒级数,a默认为0,Name和Value为选项名和选项值,成对使用
Name | ||
---|---|---|
'ExpansionPoint' |
指定展开点,对应值可为标量或向量 | 未设置为0 |
'Order' |
指定截断参数,对应值为一个正整数 | 未设置,截断参数为6,即展开式最高阶为5 |
'OrderMode' |
采用绝对阶或相对阶,对应值为'Absolute' 和'Relative' |
未设置取绝对阶 |
符号方程 #
solve(s,v)
求解符号表达式s的代数方程,求解变量v,省略取默认
solve(s1,s2,...,sn,v1,v2,...,vn)
求解结果不一定准确
常微分方程符号求解
D
表示导数,D2y
表示y’’,Dy(0)=5
表示y’(0)=5
dsolve(e,c,v)
求解常微分方程e在初值条件c下的特解,若没有给出c则求通解
dsolve(e1,e2,...,en,c1,c2,...,cn,v)
Simulink #
s函数 #
模版文件sfuntmpl.m
-
主函数 #
function [sys,x0,str,ts] = fname(t,x,u,flag)
- fname是s函数的函数名
- t,x,u,flag为仿真时间,状态向量,输入向量和子函数调用标志
- 输出形参sys代表一种返回参数;x0是初始状态值;对于M文件S函数,str将被置成一个空阵;ts是一个两列矩阵(一列是个状态变量的采样周期,另一列为相应的采样时间的偏移量)(对连续系统,采样周期和偏移量都应为0,采样周期为-1,则继承输入信号的采样周期)
-
子函数
共6个,前缀mdl,由flag值控制仿真各阶段调用哪一个
flag 0 调用子函数 mdlInitializeSizes
初始化子函数 1 调用子函数 mdlSerivatives
实现连续状态的更新 2 调用 mdlUpdate
实现离散状态的更新 3 mdlOutputs
输出子函数