仿真复习资料
一,基本矩阵和函数的操作 1.已知x=[2 4 6] ,y=[1 3 5]
1) a= x+y a=3 7 11 加法
2) b= x*y’ b=44 y’ 表示矩阵的转置 3) c= x.*y c= 2 12 30 直接相乘
4) d= x.^y d=2 64 7776 前者为底数后者为指数
5) e=conv(x,y) e=2 10 28 38 30 代数式相乘(conv只能用于两
个相乘,多了就要嵌套)
6) f= poly(x) f=1 -12 44 -48 (x-2)(x-2(x-6)的系数 7) g= roots(f) g=2.000 ;4.000;6.000 求根 8) h= polyval(x,3) h=36 赋值 9) m=polyder(x) m=4 4 求导
10) x(5)=7 x=2 4 6 0 7 第五项赋值为5,第四项自动为0
2.已知x=[2 4 6] ,y=[1 3 5] 多项式拟合。 >> x=[2 4 6];y=[1 3 5];
>> p=polyfit(x,y,3) 3表示拟合的阶数 p =-0.0208 0.2500 0.0833 0
3,常用的函数
Sin(),cos(),tin(),cot(),esp(x)=ex,sqrt(x)=x,a^b=ab,abs(x)=|x| asin(x)=arcsin(x),atant(),acos() round(x):四舍五入至最近整数
log(x):以e为底的对数,log10(x)以10为底的对数 l og2(x):以2为底的对数,pow2(x):2的指数
1
例如:y?1?sin(x)表示为y=sqrt(1-sin(x));
二,基本的二维画图指令
plot(x,y)表示y对x的函数图象;
subplot(m,n,p)表示将一个窗口分成m*n,取第p个窗口; polar(x,y)表示在极坐标下y对x的函数图象; semlilogx(x,y)表示x轴对数坐标图; semlilogy(x,y)表示y轴对数坐标图;
loglog(x,y)表示x轴和y轴都为对数的坐标图; plot(x1,y1,x2,y2)表示在同一坐标系下划两个图; xlabel(' ')表示对x轴注解; ylabel(' ')表示对y轴注解; Title(' ')表示对当前图象的标题。 例如:
>> x=0:0.01:10; >> y=sqrt(1-sin(x)); >> subplot(221); >> plot(x,y);
>> title('正常坐标图'); >> subplot(222); >> polar(x,y); >> title('极坐标图'); >> subplot(223); >> semilogx(x,y);
>> title('x轴对数坐标图'); >> subplot(224); >> semilogy(x,y);
>> title('y轴对数坐标图'); 图象见试题
2
三,矩阵的赋值和运算
函数 zeros
格式 B = zeros(n) %生成n×n全零阵
B = zeros(m,n) %生成m×n全零阵 B = zeros([m n]) %生成m×n全零阵
B = zeros(size(A)) %生成与矩阵A相同大小的全零阵
函数 eye
格式 Y = eye(n) %生成n×n单位阵
Y = eye(m,n) %生成m×n单位阵
Y = eye(size(A)) %生成与矩阵A相同大小的单位阵
函数 ones
格式 Y = ones(n) %生成n×n全1阵
Y = ones(m,n) %生成m×n全1阵 Y = ones([m n]) %生成m×n全1阵
Y = ones(size(A)) %生成与矩阵A相同大小的全1阵
命令 正态分布随机矩阵 函数 randn
格式 Y = randn(n) %生成n×n正态分布随机矩阵
Y = randn(m,n) %生成m×n正态分布随机矩阵 Y = randn([m n]) %生成m×n正态分布随机矩阵
命令 产生线性等分向量 函数 linspace
格式 y = linspace(a,b) %在(a, b)上产生100个线性等分点
y = linspace(a,b,n) %在(a, b)上产生n个线性等分点
函数 logspace
a格式 y = logspace(a,b) 在( b )之间产生50个对数等分向量 , 10y = logspace(a,b,n) y = logspace(a,pi)
函数 deconv
格式 [q,r] = deconv(v,u) %多项式v除以多项式u,返回商多项式q和余多项式r。
矩阵的转置 a=a’
格式 d = det(X) %返回方阵X的多项式的值
函数 trace
格式 b=trace (A) %返回矩阵A的迹,即A的对角线元素之和。
3
格式 k = rank (A) %求矩阵A的秩
函数 diag
格式 X = diag(v,k) %以向量v的元素作为矩阵X的第k条对角线元素,
当k=0时,v为X的主对角线;当k>0时,v为上方第k条对角线;当k<0时,v为下方第k条对角线。
X = diag(v) %以v为主对角线元素,其余元素为0构成X。 v = diag(X,k) %抽取X的第k条对角线元素构成向量v。k=0:抽取
主对角线元素;k>0:抽取上方第k条对角线元素;k<0抽取下方第k条对角线元素。
v = diag(X) %抽取主对角线元素构成向量v。
格式 B = rot90 (A) %将矩阵A逆时针方向旋转90°
格式 B = fliplr(A) %将矩阵A左右翻转
格式 B = flipud(A) %将矩阵A上下翻转
四,系统的一些基本操作
1,传递函数,状态空间,零极点增益的基本操作
注意在以下表示中用num表示传递函数的分子,den表示传递函数的分母;a,b,c,d为状态空间表示,z,p,k为零极点增益。
如(s+1)/(s+2),num=[1 1],den=[1 2],从右往左为常数项到最高次的系数。 系统的表示
tf(num,den)表示以num为分子以den为分母的传递函数; ss(a,b,c,d);zp(z,p,k);
不同表示之间的转化
[num,den]=ss2tf(a,b,c,d);将状态空间转化为传递函数; [z,p,k]=ss2zp(a,b,c,d);将状态空间转化为零极点增益; 以下类似[a,b,c,d]=zp2ss(z,p,k);[num,den]=zp2tf(z,p,k); [r,p,k] = residue(num,den) [num,den]= residue(r,p,k)
4
2.系统之间的连接
先定义两个系统g1和g2,g1=tf(num1,den1);g2=ft(num2,den2); 串联 [num,den]=series(g1,g2);或g=g1*g2; 并联 [num,den]=paralle(g1,g2); 反馈 [num,den]=feedback(g1,g2).
3,系统的仿真
先定义系统g=tf(num,den);或g=ss(a,b,c,d);或g=zp(z,p,k) 单位阶跃响应 step(g);step(num,den);step(a,b,c,d).
4,根轨迹
先定义系统g=tf(num,den);或g=ss(a,b,c,d);或g=zp(z,p,k) rlocus(g); rlocus(num,den); rlocus(a,b,c,d)
5,奈氏曲线
先定义系统g=tf(num,den);或g=ss(a,b,c,d);或g=zp(z,p,k) nyquist(g);nyquist(num,den); nyquist(a,b,c,d)
6,波特图
先定义系统g=tf(num,den);或g=ss(a,b,c,d);或g=zp(z,p,k) [m,p,w]=bode(g);或bode(num,den);
[mag,phase,wc,wg]=margin(g);或margin(num,den);
五,数值积分法仿真
一下程序中加粗加下划线的为需要变化的,其他的不变。
1,欧拉法
dy/dt=f(t,y) ,y(t0)=y0,y(k+1)=y(k)+hf(t(k),y(k)).
例题: 已知 dy/dt=2t,y(0)=0 ,试用欧拉法进行仿真 h=0.01;Tf=10;t=0;
y=0;m=Tf/h; 对y赋初值 for i=1:m
y(i+1)=y(i)+h*2*t(i); y(i+1)=y(i)+h*f(t(i),y(i)) t=[t,t(i)+h]; end
plot(t,y); grid
状态空间的欧拉仿真
a=[-14 9 10;12 -9 10;24 -24 -18]; b=[2.8 4 12]';c=[1 1 1]; 状态空间输入 x=[0 0 0]'; y=0;u=100;t=0; y,u初始化值 h=0.01;Tf=10; m=Tf/h; for i=1:m
x=x+h*(a*x+b*u);
5