基本

变量域与格式

清理工作区变量:clear、清理命令行窗口:clc

调整输出格式:

1
format [style]

其中style有:

style 描述
rat 以分数形式输出
compact 以紧凑型格式输出
short 以四位小数输出
long 输出较长的小数位
shortEng 以科学计数法输出较短小数
longEng 以科学计数法输出较长小数
hex 以 16 进制数输出

输入输出

函数名 用法示例 描述
disp() disp(String) 显示一段文字
fprintf() fprintf(formated string{,data}) 格式输出(字面意思)
print() print(Target,data) Target展示data(不常用)

逻辑运算

判断语句:

1
2
3
4
5
6
7
if (条件语句)
    运算式
elseif (条件语句2)
    运算式2
else
    运算式3
end

for 循环:

1
2
3
4
5
6
7
8
for 变数 = 矩阵
    运算式
end

% 等差数列
for i = 1:6
    disp(i)  % 逐行输出 1 2 3 4 5 6
end

while 循环:

1
2
3
while 条件式
    运算式
end

代数式运算

代数式求解

函数名 用法示例 描述
solve() solve(equation,syms) syms为自变量求解方程equation的解
solve() [x,y,z] = solve(方程1,方程2,方程3,x,y,z) 将x,y,z解出
vpa() vpa(x,n) 将变量x化为小数,小数共有n位

代数式优化

函数名 用法示例 描述
floor() floor([ ] or num) 向下取整
simplify() simplify(Algebraic expression) 化简代数式
subs() subs(f,[a b],[c d]) 将符号表达式f中的a,b代换为c,d
exp() exp(x) 获得e的x次方

多项式曲线拟合

polyfit是多项式曲线拟合函数,polyval是多项式计算求值函数

函数名 用法示例 描述
polyfit() polyfit(x,y,m) x,y表示横纵坐标向量,代表多项式系数
polyval() y0 = polyval(p,x0) 求多项式在x0处的取值,x0可以是向量。p为多项式的系数由高到低排列组成的向量,如y=3x^2+5x+4的p为[3,5,4]

高等数学

微分

diff 函数用以演算一函数的微分项,相关的函数语法有下列 4 个:

diff(f) 传回 f 对预设独立变数的一次微分值
diff(f,’t') 传回 f 对独立变数 t 的一次微分值
diff(f,n) 传回 f 对预设独立变数的 n 次微分值
diff(f,’t',n) 传回 f 对独立变数 t 的 n 次微分值

数值微分函数也是用 diff,因此这个函数是靠输入的引数决定是以数值或是符号微分,假设引数为向量则运行数值微分,假设引数为符号表示式则运行符号微分。

先定义下列三个方程式,接著再演算其微分项:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
>>S1 = '6*x^3-4*x^2+b*x-5';

>>S2 = 'sin(a)';

>>S3 = '(1 - t^3)/(1 + t^4)';

>>diff(S1)

ans=18*x^2-8*x+b

>>diff(S1,2)

ans= 36*x-8

>>diff(S1,'b')

ans= x

>>diff(S2)

ans=

cos(a)

>>diff(S3)

ans=-3*t^2/(1+t^4)-4*(1-t^3)/(1+t^4)^2*t^3

>>simplify(diff(S3))

ans= t^2*(-3+t^4-4*t)/(1+t^4)^2

极限

limit()用于计算所给函数的极限具体用法如下:

函数名 用法示例 描述
limit() limit(f,x,a,‘left’) 可给出函数f关于x->a时极限,‘left’为左趋于a,‘right’表示右趋于a

示范样例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
syms x a b

f=x*(1-2*a/x)^x*sin(3*b/x);

L=limit(f,x,inf)

syms x

f=sin(x);

L1=limit(f,x,pi/2,'left')

L2=limit(f,x,pi/2,'right')

syms y n x

f=(x^(1/n)+y^(1/n))/(x+y);

limit(f,x,y)

多变量函数极限

多变量函数可嵌套limit函数使用

如求f(x,y)在x->x0,y->y0是的极限

1
2
3
4
5
6
7
8
syms x y

f=x+y;

L=limit(limit(f,x,1),y,1)

L =
2

积分

int 函数用以演算一函数的积分项, 这个函数要找出一符号式 F 使得 diff(F)=f。假设积分式的解析式(analytical form, closed form) 不存在的话或是 MATLAB 无法找到,则 int 传回原输入的符号式。相关的函数语法有下列 4 个:

int(f) 传回 f 对预设独立变数的积分值
int(f,’t’) 传回 f 对独立变数 t 的积分值
int(f,a,b) 传回 f 对预设独立变数的积分值,积分区间为[a,b],a 和 b 为数值式
int(f,’t’,a,b) 传回 f 对独立变数 t 的积分值,积分区间为[a,b],a 和 b 为数值式
int(f,’m',‘n’) 传回 f 对预设变数的积分值,积分区间为[m,n],m 和 n 为符号式

我们示范几个样例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
>>S1 = '6*x^3-4*x^2+b*x-5';

>>S2 = 'sin(a)';

>>S3 = 'sqrt(x)';

>>int(S1)

ans= 3/2*x^4-4/3*x^3+1/2*b*x^2-5*x

>>int(S2)

ans= -cos(a)

>>int(S3)

ans= 2/3*x^(3/2)

>>int(S3,'a','b')

ans= 2/3*b^(3/2)- 2/3*a^(3/2)

>>int(S3,0.5,0.6)

ans= 2/25*15^(1/2)-1/6*2^(1/2)

>>numeric(int(S3,0.5,0.6)) % 使用numeric函数能够计算积分的数值

ans= 0.0741

二重积分

可使用int()函数嵌套来求解二重积分

1
2
3
f=exp(-t*x);

int(int(f,t)+c1,x)+c2

常微分方程式

MATLAB 解常微分方程式的语法是 dsolve(‘equation’,‘condition’),当中 equation 代表常微分方程式即 y'=g(x,y),且须以 Dy 代表一阶微分项 y'  D2y 代表二阶微分项 y'',condition 则为初始条件。

如果有下面三个一阶常微分方程式和其初始条件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
y'=3x2, y(2)=0.5

y'=2.x.cos(y)2, y(0)=0.25

y'=3y+exp(2x), y(0)=3

相应上述常微分方程式的符号运算式为:

>>soln_1 = dsolve('Dy =3*x^2','y(2)=0.5')

ans= x^3-7.500000000000000

>>ezplot(soln_1,[2,4]) % 看看这个函数的长相

>>soln_2 = dsolve('Dy =2*x*cos(y)^2','y(0) = pi/4')

ans= atan(x^2+1)

>>soln_3 = dsolve('Dy = 3*y +exp(2*x)',' y(0) = 3')

ans= -exp(2*x)+4*exp(3*x)

级数展开

待补充

矩阵运算

矩阵生成

函数名 用法示例 描述
eye() eye(n) 生成一个n单位矩阵
ones() ones(x,y) 生成一个 x*y 的全1矩阵
zeros() zero(x,y) 生成一个 x*y 全0矩阵
diag() diag([ ]) 根据行矩阵生成对角矩阵
rand() rand(x,y) 生成一个 x*y 的随机矩阵,矩阵元素在 0-1 之间
vander() vander([ ]) 生成一个范德蒙德矩阵

矩阵变换

函数名 用法示例 描述
rot90() rot([ ]{,k}) 将一个矩阵逆时针旋转 90 度,k 默认为 1,表示旋转 k 次
fliplr() fliplr([ ]) 将一个矩阵左右翻转
flipud() flipud([ ]) 将一个矩阵上下翻转

常规运算

函数名 用法示例 描述
det() det([ ]) 行列式的值
[ ]' 求矩阵的转置矩阵
inv() inv([ ]) or []^-1 求矩阵的
rank() rank([ ]) 求矩阵的
sum() sum([ ]{,k= 1 or 2}) 求行矩阵的和或是矩阵的纵向和,k 默认为 1,当 k=2 时求横向和
mean() mean(x) 求x的平均值
sum() sum(x,‘a’) 对x的行或列求和

特征提取

函数名 用法示例 描述
size() size([ ]{,k = 1, 2, null}) 求矩阵的大小,k=1 时取矩阵的行数,k=2 时取矩阵的列数,k 不取是返回 [行数,列数]

矩阵求解

函数名 用法示例 描述
rref() rref([ ]) 求行最简矩阵,返回行最简矩阵 or [行最简矩阵,极大无关组所在的列]
linsolve() linsolve([A],[B]) 求解 A*x=B 线性方程组的特解
null() null([A]{, ‘r’} 求解的齐次线性方程组A*x=[0]的基础解系,一般情况下'r'是加上的

函数绘图

一元函数绘图

函数名 用法示例 描述
explot() explot(f,[xmin,xmax,ymin,ymax]) 绘制f函数x从min到max的函数图像,范围y从min到max
explot(x,y,[tmin,tmax]) 绘制由x=x(t),y=y(t)的参数方程

二元函数绘图

函数名 用法示例 描述
ezmesh() ezmesh(f,domain) f为函数名,domain表示取值范围
ezmesh(x,y,z,[smin,smax,tmin,tmax]) 由x,y,z表示的参数函数

回归模型

一元线性回归

函数名 用法示例 描述
regress() [b ,bint,r,rint,start] = regress(Y,X) 见下方实验的解析
1
2
3
4
5
6
x = -2:0.5:2;
y = x.^2 + 2*x + 3;
Y =[1.0000 0.2500 0 0.2500 1.0000 2.2500 4.0000 6.2500 9.0000]+2
[b ,bint,r,rint,start] = regress(Y',[ones(size(y));x;x.^2]');
b
polyval(fliplr(b'),x)

解析:

B:回归系数,是个向量(“the vector B of regression coefficients in the linear model Y = X*B”)

BINT:回归系数的区间估计(“a matrix BINT of 95% confidence intervals for B”)

R:残差( “a vector R of residuals”)

RINT:置信区间(“a matrix RINT of intervals that can be used to diagnose outliers”)

STATS:用于检验回归模型的统计量。有4个数值:判定系数R^2,F统计量观测值,检验的p的值,误差方差的估计

ALPHA:显著性水平(缺少时为默认值0.05)

Y是一个由结果组成的列向量(如果不是列向量,需要转置)

X是单因素x的所有次方(包括零次方,也就是全1向量,通常用ones(size(x))生成。)组成的矩阵的转置

注意:

回归系数B是个按x次方由小到大排列的列向量,使用polyval拟合结果时需要对B转置并左右交换,即polyval(fliplr(b'),x)

多元线性回归

函数名 用法示例 描述
regress() 如下 如下
1
2
3
4
5
6
7
% 导入数据  
y=[7613.51  7850.91  8381.86  9142.81 10813.6 8631.43 8124.94 9429.79 10230.81 10163.61 9737.56 8561.06 7781.82 7110.97]';
x1=[7666 7704 8148 8571 8679 7704 6471 5870 5289 3815 3335 2927 2758 2591]';  
x2=[16.22 16.85 17.93 17.28 17.23 17 19 18.22 16.3 13.37 11.62 10.36 9.83 9.25]';  
X=[ones(size(y)), x1.^2,x2.^2, x1, x2, x1.*x2];  
% 开始分析  
[b,bint,r,rint,stats] = regress(y,X); 

一元非线性回归

函数名 用法示例 描述
inline() fun=inline(‘函数’,‘待定系数’,‘变量’) 将fun定义为带有待定系数的内联函数
nlinfit() [beta,r,j]=nlinfit(x,y,fun,b0) x为自变量,y为因变量,fun为非线性回归的函数,b0是初始函数,beta为待定系数组成的向量,r为拟合残差,j为雅可比矩阵的数值
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
x=[ 0,47,93,140,186,279,372,465,558,651];

y=[18.98,27.35,34.86,38.52,38.44,37.73,38.43,43.87,42.77,46.22];

plot(x,y,'*')

b0=[43,0.6,0.1]; %初始参数值

fun=inline('b(1)*(1-b(2)*exp(-b(3)*x))','b','x');

[b,r,j]=nlinfit(x,y,fun,b0);

b %最佳参数

R=sum(r.^2) %误差平方和

y1=42.6643*(1-0.5483*exp(-0.0099*x));

plot(x,y,'*',x,y1,'-or')

可决系数

可决系数是检验曲线拟合度的重要指标

1
2
3
4
5
6
% 求可决系数R,求残差绝对值和W
% r1为残差,x为原始数据
R1 = sum(r1.^2);
R2 = sum((x-mean(x)).^2);
R = 1-R1/R2'
W = sum(abs(r1))