一、常用函数及运算符
1、运算符与特殊字符
+ 加 ... 续行标志 ’ 矩阵转置
- 减 ;分行符(该行结果不显示)
* 矩阵乘 .* 点乘 % 注释标志
^ 幂 .^ 向量乘方
\ 矩阵左除 = 赋值运算
/ 矩阵右除 == 关系运算之相等
.\ 向量左除 ~= 关系运算之不等
./ 向量右除 < 关系运算之小于
<= 小于等于 > 关系运算之大于
[] 矩阵生成 >= 大于等于
2、常用函数表
sin( ) 正弦(变量为弧度)
cot( ) 余切(变量为弧度)
sind( ) 正弦(变量为度数)
cotd( ) 余切(变量为度数)
asin( ) 反正弦(返回弧度)
acot( ) 反余切(返回弧度)
Asind( ) 反正弦(返回度数)
acotd( ) 反余切(返回度数)
cos( ) 余弦(变量为弧度)
exp( ) 指数函数
cosd( ) 余弦(变量为度数)
log( ) 对数
acos( ) 余正弦(返回弧度)
log10( ) 以10为底对数即 lg
acosd( ) 余正弦(返回度数)
sqrt( ) 开根号
tan( ) 正切(变量为弧度)
tand( ) 正切(变量为度数)
abs( ) 取绝对值
atan( ) 反正切(返回弧度)
angle( ) 返回复数的相位角
atand( ) 反正切(返回度数)
mod(x,y) 返回x/y的余数
sum( ) 向量元素求和
其余函数可以用help elfun和help specfun命令获得。
3、常用常数的值
pi 圆周率3.1415926…….
i 虚数单位
j 虚数单位
Inf 无限值
eps 浮点相对经度=2^-52
NaN 空值
4、控制流程
break 中断循环执行的语句 if 条件转移语句
case 与switch结合实现多路转移 otherwise 多路转移中的缺省执行部分
else 与if一起使用的转移语句 return 返回调用函数
elseif 与if一起使用的转移语句 switch 与case结合实现多路转移
end 结束控制语句块 warning 显示警告信息
error 显示错误信息 while 循环语句
for 循环语句
二、常用函数命令
1、字符变量的定义
命令:syms
syms a b n x t %定义字符变量
syms y(x,t) %定义y是x和t的函数
2、解方程
matlab中解方程常用命令是solve(f(x), x),求解的是f(x) = 0的解。
举例:
syms x y
root=solve(x^2-3*x+1,x) %求方程x^2-3*x+1=0的解
[x,y]=solve(x+y==2,2*x+3*y==7,x,y) %联立方程求解
3、微分、积分
求导命令:diff(原函数,变量,求导阶数)
积分命令:int(被积函数,变量,下限,上限)
举个例子:
syms s
a=s^2+2*s+3;
equ1=diff(a,s,1) %对a求1次导
equ2=diff(a,s,2) %对a求2次导
c=1/s;
equ3=int(c,s,1,2) %对c进行1到2积分
4、实时脚本
实时脚本可以实现公式的可视化,对于复杂的公式可以一目了然
举个实例,新建一个实时脚本,粘入下列代码并运行:
syms f(l,t) wz(l,t) wy(l,t) pf(l,t) E Ap v R e Rw
a=diff(wz,l)
b=wy/Rw
c=E*(a+b)
d=-f/Ap
g=pf*R*R/(e*R+0.5*e*e)
s=c-d+v*g
m=diff(s,t)
运行结果会显示在右侧窗口:
5、合并同类项
若要将上式的分子进行合并同类项,可以利用collect(equ,x)命令,equ是指待合并的多项式,x是指待合并多项式中的变量x。
具体代码如下:
syms kp ki wc w0 s %%定义字符变量
m=s^2+2*wc*s+w0*w0; %%分母多项式
n=kp*m+2*ki*wc*s; %%分子多项式
den=collect(n,s) %%合并同类项,并输出结果
运行结果如下:
6、符号矩阵的求逆运算
如上,求矩阵Z,其中I为单位矩阵,S为符号变量。求逆矩阵命令:inv(A)。
syms s R1 Lq Ld w %定义字符变量
A=[-R1/Ld,w*Lq/Ld;-w*Ld/Lq,-R1/Lq]; %定义矩阵
C=[1,0;0,1];
SI=[s,0;0,s];
Z=collect(C*inv(SI-A),s) %计算Z并对结果进行合并同类项
结果如下:
7、求极限
如题:求符号函数f=-2*sign(s)在以下两种情况下的极限:(1)x趋于+0(2)x趋于-0
matlab极限命令:limit(f,n,x),其中f是表达式,n是表达式F的变量,x表示极限点),整条命令表示求函数f(n)在n趋于x时的极限。
syms s
f=-2*sign(s);
lim = limit(f, s, 0,'left') %%左极限
lim = limit(f, s, 0,'right') %%右极限
结果输出分别为2、-2
8、求常微分方程
(1)dx/dt=-x
(2)dx/dt=-x^3-x
(3)dx/dt=-x^3
syms x(t) C
eq1=diff(x,t,1)==-x; % 定义常微分方程
cond=x(0)==C; % 初始条件 x(0) = C
N=dsolve(eq1, cond)
eq2=diff(x,t,1)==-x^3-x; % 定义常微分方程
cond=x(0)==C; % 初始条件 x(0) = C
N=dsolve(eq2, cond)
eq3=diff(x,t,1)==-x^3; % 定义常微分方程
cond=x(0)==C; % 初始条件 x(0) = C
N=dsolve(eq3, cond)
输出结果:
9、矩阵特征值、特征向量
若求矩阵A的特征值和特征向量,则可利用[v,d]=eig(A)命令。
close all;
clc;
clear;
A=[1 1;4 -2]; %%eig是求特征值和特征向量命令,v是特征向量,为列向量,
[v,d]=eig(A) %%d是特征值矩阵,主对角线元素为特征值,与特征向量的列对应
输出结果:
10、指数、矩阵指数
exp():求解指数,如e^2
expm():求解矩阵指数,如e^At,其中A为矩阵。
对于e^At,是指矩阵指数函数,采用矩阵指数运算规则即上式2.1.15:
A=[0 1;-2 -3];
[v,d]=eig(A)
v =
0.7071 -0.4472
-0.7071 0.8944
d =
-1 0
0 -2
P=[ 0.7071 -0.4472;
-0.7071 0.8944];
sys=P*expm(d)*inv(P) %%勿用exp
sys =
0.6004 0.2325
-0.4651 -0.0972
exp()通常对一个常数进行运算,而非矩阵,若对矩阵使用exp(),则会对逐个元素的进行指数运算
下面
计算比较 A
的指数和 A
的矩阵指数运算的不同:
B = [-1 0;
0 -2 ];
exp(B) %%指数,逐个元素运算
ans = 2×2 %%结果
0.3679 1
1 0.1353
expm(B) %%%%矩阵指数
ans = 2×2 %%结果
0.3679 0
0 0.1353
11、分段函数的绘制
绘制如下两个函数:
e=-0.1:0.001:0.1;
y1=(abs(e).^0.5).*sign(e);
y2= (e/0.1).* (abs(e)<=0.01) + (abs(e).^0.5).*sign(e) .* (abs(e)>0.01);
plot(e,y1,'k-',e,y2,'r-','linewidth',2);
legend('|e|^(^0^.^5^)sgn(e)','fal(e,0.5,0.01)');
grid on;
------------------------------------------------------------------------------------
持续更新中....................