比例导引法Matlab仿真

比例导引法Matlab仿真
比例导引法Matlab仿真

%三维制导模型,比例导引法求解

%源代码作者不详,注释人:lylogn

%Modified by lylogn,2012年4月17日

clear all;

close all;

clc

dt=0.1;%仿真时间步长

alpha=pi/6;v_t=0.42;s_t=v_t*dt;%目标以0.42的速度沿alpha的角方向匀速飞行,s_t为目标在单位仿真步长前进的距离

v_m=0.60;s_m=v_m*dt;%s_m为导弹在单位仿真步长沿目前速度方向前进的距离

x(1)=0;y(1)=1.0;z(1)=0;

pmr(:,1)=[x(1);y(1);z(1)]; %导弹初始位置,在坐标原点

ptr(:,1)=[25;5;7]; %目标初始位置

K=3; %比例导引系数

q(1)=0; %初始的视线角,设定参考线为t和m初始位置的连线

o(1)=0; %初始导弹速度向量方向角

a(1)=0; %初始导弹相对目标的运动速度向量的方向角

for(k=2:600)

ptr(:,k)=[ptr(1,1)-v_t*cos(alpha)*dt*k;ptr(2,1);ptr(3,1)+v_t*sin(alpha)*k*dt]; %目标运行轨迹方程,匀速直线运动

r(k-1)=sqrt((ptr(1,k-1)-pmr(1,k-1))^2+(ptr(2,k-1)-pmr(2,k-1))^2+(ptr(3,k-1)-pmr(3,k-1))^2); %k-1时刻导弹与目标在三维空间中的欧氏距离

c=sqrt((ptr(1,k)-pmr(1,k-1))^2+(ptr(2,k)-pmr(2,k-1))^2+(ptr(3,k)-pmr(3,k-1))^2); %目标k时刻位置与导弹k-1时刻位置间的距离

b=acos((r(k-1)^2+s_t^2-c^2)/(2*r(k-1)*s_t));

%%%此处参见公式一%%%

dq=acos((r(k-1)^2-s_t^2+c^2)/(2*r(k-1)*c));%k-1时刻到k时刻的视线角变化量(假设导弹不动,目标移动)

%%%此处参见图一%%%

if abs(imag(b))>0 %如果acos的值出现虚数,则说明该角度一定很小,对其进行近似操作b=0.0000001;

end

if abs(imag(dq))>0 %同上

dq=0.0000001;

end

q(k)=q(k-1)+dq; %更新视线角

o(k)=o(k-1)+K*dq; %更新导弹速度向量方向角

a(k)=o(k)-q(k); %更新导弹相对目标的运动速度向量的方向角

c1=r(k-1)*sin(b)/sin(a(k)+b); %计算k-1时刻角b所对边的长度

%%%此处参见公式二%%%

c2=r(k-1)*sin(a(k))/sin(a(k)+b); %计算k-1时刻角a(k)所对边的长度

c3=sqrt((c1-s_m)^2+(c2-s_t)^2+2*(c1-s_m)*(c2-s_t)*cos(a(k)+b)); %计算k时刻导弹m与目标t之间的距离(在导弹不动,目标移动的假设条件下),为假值

dq=a(k)-acos(((c1-s_m)^2+c3^2-(c2-s_t)^2)/(2*(c1-s_m)*c3)); %k-1时刻到k时刻的视线角变化量(假设导弹移动,目标也移动),以下代码重复以上过程,为假值

%%%此处参见图二%%%

if abs(imag(dq))>0

dq=0.0000001;

end

q(k)=q(k-1)+dq;

o(k)=o(k-1)+K*dq;

a(k)=o(k)-q(k);

c1=r(k-1)*sin(b)/sin(a(k)+b);

c2=r(k-1)*sin(a(k))/sin(a(k)+b);

c3=sqrt((c1-s_m)^2+(c2-s_t)^2+2*(c1-s_m)*(c2-s_t)*cos(a(k)+b)); %计算k时刻导弹m与目标t之间的距离(在导弹移动,目标也移动的假设条件下),逼近真值,以下计算使之更加精确

dq=a(k)-acos(((c1-s_m)^2+c3^2-(c2-s_t)^2)/(2*(c1-s_m)*c3)); %k-1时刻到k时刻的视线角变化量(假设导弹移动,目标也移动),以下代码重复以上过程,为真值

if abs(imag(dq))>0

dq=0.0000001;

end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%

?ded by lylogn 2012.04.17,To make 'dq' get closer to its true value

q(k)=q(k-1)+dq;

o(k)=o(k-1)+K*dq;

a(k)=o(k)-q(k);

c1=r(k-1)*sin(b)/sin(a(k)+b);

c2=r(k-1)*sin(a(k))/sin(a(k)+b);

c3=sqrt((c1-s_m)^2+(c2-s_t)^2+2*(c1-s_m)*(c2-s_t)*cos(a(k)+b)); %计算k时刻导弹m与目标t之间的距离(在导弹移动,目标也移动的假设条件下),逼近真值,以下计算使之更加精确

dq=a(k)-acos(((c1-s_m)^2+c3^2-(c2-s_t)^2)/(2*(c1-s_m)*c3)); %k-1时刻到k时刻的视线角变化量(假设导弹移动,目标也移动),以下代码重复以上过程,为真值

if abs(imag(dq))>0

dq=0.0000001;

end

q(k)=q(k-1)+dq;

o(k)=o(k-1)+K*dq;

a(k)=o(k)-q(k);

c1=r(k-1)*sin(b)/sin(a(k)+b);

c2=r(k-1)*sin(a(k))/sin(a(k)+b);

c3=sqrt((c1-s_m)^2+(c2-s_t)^2+2*(c1-s_m)*(c2-s_t)*cos(a(k)+b)); %计算k时刻导弹m与目标t之间的距离(在导弹移动,目标也移动的假设条件下),逼近真值,以下计算使之更加精确

dq=a(k)-acos(((c1-s_m)^2+c3^2-(c2-s_t)^2)/(2*(c1-s_m)*c3)); %k-1时刻到k时刻的视线角变化量(假设导弹移动,目标也移动),以下代码重复以上过程,为真值

if abs(imag(dq))>0

dq=0.0000001;

end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%

q(k)=q(k-1)+dq;

o(k)=o(k-1)+K*dq;

a(k)=o(k)-q(k);

c1=r(k-1)*sin(b)/sin(a(k)+b);

c2=r(k-1)*sin(a(k))/sin(a(k)+b);

c3=sqrt((c1-s_m)^2+(c2-s_t)^2+2*(c1-s_m)*(c2-s_t)*cos(a(k)+b)); %计算k时刻导弹m与目标t之间的距离,终于近似为真值了

x1(k)=ptr(1,k-1)+c2/s_t*(ptr(1,k)-ptr(1,k-1));

y1(k)=ptr(2,k-1)+c2/s_t*(ptr(2,k)-ptr(2,k-1));

z1(k)=ptr(3,k-1)+c2/s_t*(ptr(3,k)-ptr(3,k-1)); %计算出角b所对边与目标运动轨迹的交点:(x1,y1,z1)

%%%参见公式三%%%

x(k)=pmr(1,k-1)+s_m/c1*(x1(k)-pmr(1,k-1));

y(k)=pmr(2,k-1)+s_m/c1*(y1(k)-pmr(2,k-1));

z(k)=pmr(3,k-1)+s_m/c1*(z1(k)-pmr(3,k-1)); %计算出导弹k时刻所运动到的位置:(x,y,z)%%%参见公式三%%%

pmr(:,k)=[x(k);y(k);z(k)];

r(k)=sqrt((ptr(1,k)-pmr(1,k))^2+(ptr(2,k)-pmr(2,k))^2+(ptr(3,k)-pmr(3,k))^2);

if r(k)<0.06;

break;

end;

end

sprintf('遭遇时间:%3.1f',0.1*k);

figure(1);

plot3(pmr(1,1:k),pmr(2,1:k),pmr(3,1:k),'k',ptr(1,:),ptr(2,:),ptr(3,:));

axis([0 25 0 5 0 25]);

text(x(180),y(180),z(180),'\rightarrow 比例导引律制导下的导弹运动轨迹');

text(ptr(1,280),ptr(2,280),ptr(3,280),'\rightarrow 目标运动轨迹');

grid on

之后,鉴于程序中很多地方不结合模型图也很难理解,将其中关键的图例与公式提取如下:

最后,程序的运行过程分析完成,具体的细节详见注释,运行结果如下图所示:

综上所述,本工作对比例导引法求解三维制导问题的仿真程序进行了详细的分析与注释,程序运行正常,希望对大家理解比例导引法有所帮助。

2012年4月17日

于实验室

Created by lylogn

层次分析法及matlab程序

层次分析法建模 层次分析法(AHP-Analytic Hierachy process)---- 多目标决策方法 70 年代由美国运筹学家T·L·Satty提出的,是一种定性与定量分析相结合的多目标决策分析方法论。吸收利用行为科学的特点,是将决策者的经验判断给予量化,对目标(因素)结构复杂而且缺乏必要的数据情况下,採用此方法较为实用,是一种系统科学中,常用的一种系统分析方法,因而成为系统分析的数学工具之一。 传统的常用的研究自然科学和社会科学的方法有: 机理分析方法:利用经典的数学工具分析观察的因果关系; 统计分析方法:利用大量观测数据寻求统计规律,用随机数学方法描述(自然现象、 社会现象)现象的规律。 基本内容:(1)多目标决策问题举例AHP建模方法 (2)AHP建模方法基本步骤 (3)AHP建模方法基本算法 (3)AHP建模方法理论算法应用的若干问题。 参考书: 1、姜启源,数学模型(第二版,第9章;第三版,第8章),高等教育出版社 2、程理民等,运筹学模型与方法教程,(第10章),清华大学出版社 3、《运筹学》编写组,运筹学(修订版),第11章,第7节,清华大学出版社 一、问题举例: A.大学毕业生就业选择问题 获得大学毕业学位的毕业生,“双向选择”时,用人单位与毕业生都有各自的选择标准和要求。就毕业生来说选择单位的标准和要求是多方面的,例如: ①能发挥自己的才干为国家作出较好贡献(即工作岗位适合发挥专长); ②工作收入较好(待遇好); ③生活环境好(大城市、气候等工作条件等); ④单位名声好(声誉-Reputation); ⑤工作环境好(人际关系和谐等) ⑥发展晋升(promote, promotion)机会多(如新单位或单位发展有后劲)等。 问题:现在有多个用人单位可供他选择,因此,他面临多种选择和决策,问题是他将如何作出决策和选择?——或者说他将用什么方法将可供选择的工作单位排序?

对称分量法(零序-正序-负序)的理解与计算

对称分量法(零序,正序,负序)的理解与计算 1)求零序分量:把三个向量相加求和。即A相不动,B相的原点平移到A相的顶端(箭头处),注意B相只是平移,不能转动。同方法把C相的平移到B相的顶端。此时作A相原点到C相顶端的向量(些时是箭头对箭头),这个向量就是三相向量之和。最后取此向量幅值的三分一,这就是零序分量的幅值,方向与此向量是一样的。 2)求正序分量:对原来三相向量图先作下面的处理:A相的不动,B相逆时针转120度,C 相顺时针转120度,因此得到新的向量图。按上述方法把此向量图三相相加及取三分一,这就得到正序的A相,用A相向量的幅值按相差120度的方法分别画出B、C两相。这就得出 了正序分量。 3)求负序分量:注意原向量图的处理方法与求正序时不一样。A相的不动,B相顺时针转120度,C相逆时针转120度,因此得到新的向量图。下面的方法就与正序时一样了。 对电机回路来说是三相三线线制,Ia+Ib+Ic=0,三相不对称时也成立; 当Ia+Ib+Ic≠0时必有一相接地,对地有有漏电流; 对三相四线制则为Ia+Ib+Ic+Io=0成立,只要无漏电,三相不对称时也成立; 因此,零序电流通常作为漏电故障判断的参数。 负序电流则不同,其主要应用于三相三线的电机回路; 在没有漏电的情况下(即Ia+Ib+Ic=0),三相不对称时也会产生负序电流; 负序电流常作为电机故障判断; 注意了: Ia+Ib+Ic=0与三相对称不是一回事; Ia+Ib+Ic=0时,三相仍可能不对称。 注意了: 三相不平衡与零序电流不可混淆呀! 三相不平衡时,不一定会有零序电流的; 同样有零序电流时,三相仍可能为对称的。(这句话对吗?) 前面好几位把两者混淆了吧!

时域有限差分法的Matlab仿真

时域有限差分法的Matlab仿真 关键词: Matlab 矩形波导时域有限差分法 摘要:介绍了时域有限差分法的基本原理,并利用Matlab仿真,对矩形波导谐振腔中的电磁场作了模拟和分析。 关键词:时域有限差分法;Matlab;矩形波导;谐振腔 目前,电磁场的时域计算方法越来越引人注目。时域有限差分(Finite Difference Time Domain,FDTD)法[1]作为一种主要的电磁场时域计算方法,最早是在1966年由K. S. Yee提出的。这种方法通过将Maxwell旋度方程转化为有限差分式而直接在时域求解,通过建立时间离散的递进序列,在相互交织的网格空间中交替计算电场和磁场。经过三十多年的发展,这种方法已经广泛应用到各种电磁问题的分析之中。 Matlab作为一种工程仿真工具得到了广泛应用[2]。用于时域有限差分法,可以简化编程,使研究者的研究重心放在FDTD法本身上,而不必在编程上花费过多的时间。 下面将采用FDTD法,利用Matlab仿真来分析矩形波导谐振腔的电磁场,说明了将二者结合起来的优越性。 1FDTD法基本原理 时域有限差分法的主要思想是把Maxwell方程在空间、时间上离散化,用差分方程代替一阶偏微分方程,求解差分方程组,从而得出各网格单元的场值。FDTD 空间网格单元上电场和磁场各分量的分布如图1所示。 电场和磁场被交叉放置,电场分量位于网格单元每条棱的中心,磁场分量位于网格单元每个面的中心,每个磁场(电场)分量都有4个电场(磁场)分量环绕。这样不仅保证了介质分界面上切向场分量的连续性条件得到自然满足,而且

还允许旋度方程在空间上进行中心差分运算,同时也满足了法拉第电磁感应定律和安培环路积分定律,也可以很恰当地模拟电磁波的实际传播过程。 1.1Maxwell方程的差分形式 旋度方程为: 将其标量化,并将问题空间沿3个轴向分成若干网格单元,用Δx,Δy和Δz 分别表示每个网格单元沿3个轴向的长度,用Δt表示时间步长。网格单元顶点的坐标(x,y,z)可记为: 其中:i,j,k和n为整数。 同时利用二阶精度的中心有限差分式来表示函数对空间和时间的偏导数,即可得到如下FDTD基本差分式: 由于方程式里出现了半个网格和半个时间步,为了便于编程,将上面的差分式改写成如下形式:

层次分析法matlab程序

disp('请输入判断矩阵A(n阶)'); A=input('A='); [n,n]=size(A); x=ones(n,100); y=ones(n,100); m=zeros(1,100); m(1)=max(x(:,1)); y(:,1)=x(:,1); x(:,2)=A*y(:,1); m(2)=max(x(:,2)); y(:,2)=x(:,2)/m(2); p=0.0001;i=2;k=abs(m(2)-m(1)); while k>p i=i+1; x(:,i)=A*y(:,i-1); m(i)=max(x(:,i)); y(:,i)=x(:,i)/m(i); k=abs(m(i)-m(i-1)); end a=sum(y(:,i)); w=y(:,i)/a; t=m(i); disp(w);disp(t); %以下是一致性检验 CI=(t-n)/(n-1);RI=[0 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56

1.58 1.59]; CR=CI/RI(n); if CR<0.10 disp('此矩阵的一致性可以接受!'); disp('CI=');disp(CI); disp('CR=');disp(CR); end function AHPInit1(x,y) %层次分析的初始化 %默认只有两层x为准则数,y为方案数 %CToT为准则对目标生成的比较阵 %EigOfCri为准则层的特征向量 %EigOfOpt为选项层的特征向量 EigOfCri=zeros(x,1);%准则层的特征向量 EigOfOpt=zeros(y,x); dim=x;%维度 RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];%RI标准%生成成对比较阵 for i=1:dim CToT(i,:)=input('请输入数据:'); end CToT %输出 pause, tempmatrix=zeros(x+1);

各种BP学习算法MATLAB仿真

3.3.2 各种BP学习算法MATLAB仿真 根据上面一节对BP神经网络的MATLAB设计,可以得出下面的通用的MATLAB程序段,由于各种BP学习算法采用了不同的学习函数,所以只需要更改学习函数即可。 MATLAB程序段如下: x=-4:0.01:4; y1=sin((1/2)*pi*x)+sin(pi*x); %trainlm函数可以选择替换 net=newff(minmax(x),[1,15,1],{'tansig','tansig','purelin'},'trainlm'); net.trainparam.epochs=2000; net.trainparam.goal=0.00001; net=train(net,x,y1); y2=sim(net,x); err=y2-y1; res=norm(err); %暂停,按任意键继续 Pause %绘图,原图(蓝色光滑线)和仿真效果图(红色+号点线) plot(x,y1); hold on plot(x,y2,'r+'); 注意:由于各种不确定因素,可能对网络训练有不同程度的影响,产生不同的效果。如图3-8。 标准BP算法(traingd)

图3-8 标准BP算法的训练过程以及结果(原图蓝色线,仿真图+号线)增加动量法(traingdm) 如图3-9。 图3-9 增加动量法的训练过程以及结果(原图蓝色线,仿真图+号线)弹性BP算法(trainrp)如图3-10 图3-10 弹性BP算法的训练过程以及结果(原图蓝色线,仿真图+号线)

动量及自适应学习速率法(traingdx)如图3-11。 图3-11 动量及自适应学习速率法的训练过程以及结果(原图蓝色线,仿真图+号线)共轭梯度法(traincgf)如图3-12。

层次分析法实现代码(MATLAB)

%% AHP weight calculation %%data input clc clear all A =[1 3 5 7 9 5;1/3 1 3 9 3 3;1/5 1/3 1 3 3 1/3;1/7 1/9 1/3 1 5 1/3;1/9 1/3 1/3 1/5 1 1/3;1/5 1/3 1 3 3 1]; %%Consistency calculation and weight vector calculation [n,n] = size(A); [v,d] = eig(A); r = d(1,1); CI = (r-n)/(n-1); RI = [0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.52 1.54 1.56 1.58 1.59]; CR = CI/RI(n); if CR<0.10 CR_Result = 'pass'; else CR_Result = 'no pass'; end % % Weight vector calculation w = v(:,1)/sum(v(:,1));

w = w'; % % output disp('The judgment matrix weight vector calculation report:'); disp('coincidence indicator:');disp(num2str(CI)); disp('Consistency ratio:');disp(num2str(CR)); disp(' Consistency test results:');disp(CR_Result); disp('eigenvalue:');disp(num2str(r)); disp('weight vector:');disp(num2str(w));

对称分量法基本概念和简单计算[1]

对称分量法基本概念和简单计算 正常运行的电力系统,三相电压、三相电流均应基本为正相序,根据负荷情况(感性或容性),电压超前或滞后电流1个角度(Φ),如图1。 图1:正常运行的电力系统电压电流矢量图 对称分量法是分析电力系统三相不平衡的有效方法,其基本思想是把三相不平衡的电流、电压分解成三组对称的正序相量、负序相量和零序相量,这样就可把电力系统不平衡的问题转化成平衡问题进行处理。在三相电路中,对于任意一组不对称的三相相量(电压或电流),可以分解为3组三相对称的分量。 图2:正序相量、负序相量和零序相量(以电流为例) 当选择A相作为基准相时,三相相量与其对称分量之间的关系(如电流)为: IA=Ia1+Ia2+Ia0――――――――――――――――――――――――――○1 IB=Ib1+Ib2+Ib0=α2 Ia1+αIa2 + Ia0――――――――――○2 IC=Ic1+Ic2+Ic0=α Ia1+α2 Ia2+Ia0―――――――――――○3 对于正序分量:Ib1=α2 Ia1,Ic1=αIa1 对于负序分量:Ib2=αIa2,Ic2=α2Ia2

对于零序分量:Ia0= Ib0 = Ic0 式中,α为运算子,α=1∠120°, 有α2=1∠240°, α3=1, α+α2+1=0 由各相电流求电流序分量: I1=Ia1= 1/3(IA +αIB +α2 IC) I2=Ia2= 1/3(IA +α2 IB +αIC) I0=Ia0= 1/3(IA +IB +IC) 以上3个等式可以通过代数方法或物理意义(方法)求解。 以求解正序电流为例,对物理意义简单说明,以便于记忆: 求解正序电流,应过滤负序分量和零序分量。参考图2,将IB逆时针旋转120°、IC逆时针旋转240°后,3相电流相加后得到3倍正序电流,同时,负序电流、零序电流被过滤,均为0。故Ia1= 1/3(IA +αIB +α2 IC) 对应代数方法:○1式+α○2式+α2○3式易得:Ia1= 1/3(IA +αIB +α2 IC)。 实例说明: 例1、对PMC-6510仅施加A相电压60V∠0°,则装置应显示的电压序分量为: U1=U2=U0=1/3UA=20V∠0° 例2、对PMC-6510施加正常电压,UA=60V∠0°,UB=60V∠240°,UC=60V∠120°,当C相断线时,U1=?U2=?U0=? 解:U1=Ua1= 1/3(UA +α2UB + αUC)= 1/3(60V∠0°+ 1∠240°*60V∠240°) =20∠60°;(当C相断线时,接入装置的UC=0。) U2=Ua2= 1/3(UA +α UB +α2UC)= 1/3(60V∠0°+ 1∠120°*60V∠240°) =40∠0°; U0=Ua0= 1/3(UA + UB +UC)=1/3(60V∠0°+ 60V∠240°) =20∠300°。 郑顺桥 2008-12-20 如果接地阻抗为Zn的话,那么Zn表现 为3Zn~ 原因是接地电流为3倍I1 a=1∠120°= -0.5+j0.866 => 1+a^2+a = 0 Ia = Ia0 + Ia1 + Ia2

基于Matlab的层次分析法及其运用浅析

基于Matlab的层次分析法及其运用浅析 本文通过使用Matlab软件进行编程,在满足同一层次中各指标对所有的下级指标均产生影响的假定条件下,实现了层次分析法的分析运算。本程序允许用户自由设定指标层次结构内的层次数以及各层次内的指标数,通过程序的循环,用户只需输入判断矩阵的部分数据,程序可依据层次分析法的计算流程进行计算并作出判断。本程序可以方便地处理层次分析法下较大的运算量,解决层次分析法的效率问题,提高计算机辅助决策的时效性。 标签:Matlab层次分析法判断矩阵决策 在当前信息化、全球化的大背景下,传统的手工计算已不能满足人们高效率、高准确度的决策需求。因此计算机辅助决策当仁不让地成为了管理决策的新工具、新方法。基于此,本文在充分发挥计算机强大运算功能的基础上,选用美国MathWorks公司的集成数学建模環境Matlab R2009a作为开发平台,使用M语言进行编程,对计算机辅助决策在层次分析法中的运用进行讨论。试图通过程序实现层次分析法在计算机系统上的运用,为管理决策探索出新的道路。 1 层次分析法的计算流程 根据层次分析法的相关理论,层次分析法的基本思想是将复杂的决策问题进行分解,得到若干个下层指标,再对下层指标进行分解,得到若干个再下层指标,如此建立层次结构模型,然后根据结构模型构造判断矩阵,进行单排序,最后,求出各指标对应的权重系数,进行层次总排序。 1.1 构造层次结构模型在进行层次分析法的分析时,最主要的步骤是建立指标的层次结构模型,根据结构模型构造判断矩阵,只有判断矩阵通过了一致性检验后,方可进行分析和计算。其中,结构模型可以设计成三个层次,最高层为目标层,是决策的目的和要解决的问题,中间层为决策需考虑的因素,是决策的准则,最低层则是决策时的备选方案。一般来讲,准则层中各个指标的下级指标数没有限制,但在本文中设计的程序尚且只能在各指标具有相同数量的下级指标的假定下,完成层次分析法的分析,故本文后文选取的案例也满足这一假定。 1.2 建立判断矩阵判断矩阵是表示本层所有因素针对上一层某一个因素的相对重要性的比较给判断矩阵的要素赋值时,常采用九级标度法(即用数字1到9及其倒数表示指标间的相对重要程度),具体标度方法如表1所示。 1.3 检验判断矩阵的一致性由于多阶判断的复杂性,往往使得判断矩阵中某些数值具有前后矛盾的可能性,即各判断矩阵并不能保证完全协调一致。当判断矩阵不能保证具有完全一致性时,相应判断矩阵的特征根也将发生变化,于是就可以用判断矩阵特征根的变化来检验判断的一致性程度。在层次分析法中,令判断矩阵最大的特征值为λmax,阶数为n,则判断矩阵的一致性检验的指标记为:

内点法matlab仿真doc资料

编程方式实现: 1.惩罚函数 function f=fun(x,r) f=x(1,1)^2+x(2,1)^2-r*log(x(1,1)-1); 2.步长的函数 function f=fh(x0,h,s,r) %h为步长 %s为方向 %r为惩罚因子 x1=x0+h*s; f=fun(x1,r); 3. 步长寻优函数 function h=fsearchh(x0,r,s) %利用进退法确定高低高区间,利用黄金分割法进行求解h1=0;%步长的初始点 st=0.001; %步长的步长 h2=h1+st; f1=fh(x0,h1,s,r); f2=fh(x0,h2,s,r); if f1>f2 h3=h2+st; f3=fh(x0,h3,s,r); while f2>f3 h1=h2; h2=h3; h3=h3+st; f2=f3; f3=fh(x0,h3,s,r); end else st=-st; v=h1; h1=h2; h2=v; v=f1; f1=f2; f2=v; h3=h2+st; f3=fh(x0,h3,s,r); while f2>f3 h1=h2; h2=h3; h3=h3+st; f2=f3;

f3=fh(x0,h3,s,r); end end %得到高低高的区间 a=min(h1,h3); b=max(h1,h3); %利用黄金分割点法进行求解 h1=1+0.382*(b-a); h2=1+0.618*(b-a); f1=fh(x0,h1,s,r); f2=fh(x0,h2,s,r); while abs(a-b)>0.0001 if f1>f2 a=h1; h1=h2; f1=f2; h2=a+0.618*(b-a); f2=fh(x0,h2,s,r); else b=h2; h2=h1; f2=f1; h1=a+0.382*(b-a); f1=fh(x0,h1,s,r); end end h=0.5*(a+b); 4. 迭代点的寻优函数 function f=fsearchx(x0,r,epson) x00=x0; m=length(x0); s=zeros(m,1); for i=1:m s(i)=1; h=fsearchh(x0,r,s); x1=x0+h*s; s(i)=0; x0=x1; end while norm(x1-x00)>epson x00=x1; for i=1:m s(i)=1; h=fsearchh(x0,r,s);

PID控制算法的matlab仿真

PID 控制算法的matlab 仿真 PID 控制算法就是实际工业控制中应用最为广泛的控制算法,它具有控制器设计简单,控制效果好等优点。PID 控制器参数的设置就是否合适对其控制效果具有很大的影响,在本课程设计中一具有较大惯性时间常数与纯滞后的一阶惯性环节作为被控对象的模型对PID 控制算法进行研究。被控对象的传递函数如下: ()1d s f Ke G s T s τ-= + 其中各参数分别为30,630,60f d K T τ===。MATLAB 仿真框图如图1所示。 图1 2 具体内容及实现功能 2、1 PID 参数整定 PID 控制器的控制参数对其控制效果起着决定性的作用,合理设置控制参数就是取得较好的控制效果的先决条件。常用的PID 参数整定方法有理论整定法与实验整定法两类,其中常用的实验整定法由扩充临界比例度法、试凑法等。在此处选用扩充临界比例度法对PID 进行整定,其过程如下: 1) 选择采样周期 由于被控对象中含有纯滞后,且其滞后时间常数为 60d τ=,故可选择采样周期1s T =。 2) 令积分时间常数i T =∞,微分时间常数0d T =,从小到大调节比例系数K , 使得系统发生等幅震荡,记下此时的比例系数k K 与振荡周期k T 。 3) 选择控制度为 1.05Q =,按下面公式计算各参数:

0.630.490.140.014p k i k d k s k K K T T T T T T ==== 通过仿真可得在1s T =时,0.567,233k k K T ==,故可得: 0.357,114.17,32.62, 3.262p i d s K T T T ==== 0.0053.57 p s i i p d d s K T K T K T K T === = 按此组控制参数得到的系统阶跃响应曲线如图2所示。 01002003004005006007008009001000 0.20.40.60.811.21.41.6 1.8 图2 由响应曲线可知,此时系统虽然稳定,但就是暂态性能较差,超调量过大,且响应曲线不平滑。根据以下原则对控制器参数进行调整以改善系统的暂态过程: 1) 通过减小采样周期,使响应曲线平滑。 2) 减小采样周期后,通过增大积分时间常数来保证系统稳定。 3) 减小比例系数与微分时间常数,以减小系统的超调。 改变控制器参数后得到系统的阶跃响应曲线如图3所示,系统的暂态性能得到明显改善、

对称分量法

第一节对称分量法 图4—1(a)、(b)、(c)表示三组对称的三相相量。第一组相量Fa(1)、相量F b(1). 相量Fc(1),幅值相等。相位为“a 超前b 120度,b超前c 120度,称为正序;第二组相量Fa(2). 相量F b(2)相量.Fc(2),幅值相等,相序与正序相反,称为负序;第三组相量Fa(0)、相量.F b(0)、相量Fc(0),幅值和相位均相同,称为零序。在图4—1(d)中将每一组的带下标a的三个相量合成为Fa,,带下标b的合成为Fb,,带下标c的合成为F是三个小对称的相量,即三组对称的相量合成得相量Fa、Fb、Fc是三个不对称的相量。写成数学表达式为: 由于每一组是对称的,固有下列关系: 将式(4-2)代入式(4-1)可得: 此式表示上述三个不对称相量和三个对称相量中a相量的关系。其矩阵形式为:

或简写为 式(4-4)和式(4-5)说明三相对称相量合成得三个不对称相量。其逆关系为: 或简写为 式(4—6)和(4—7)说明由三个不对称的相量可以唯一地分解成三组对称的相量(即对称分量);正序分量、负序分员和不序分量。实际上,式(4—4)和(4—6)表示三个对称相量Fa、Fb、Fc和另外三个相量Fa(1)、 Fa(2)、 Fa(0)之间的线性变换关系。 如果电力系统某处发生不对称短路,尽管除短路点外三相系统的元件参数都是对称的,三相电路的电流和电压的基频分量都变成不对称的相量。将式(4—6)的变换关系应用于基频电流(或电压),则有 即将三相不对称电流(以后略去“基频”二字)Ia、Ib、Ic经过线性变换后,可分解成三 组对称的电流。即a相电流Ia分解成Ia(1)、Ia(2)、Ia(0),b相电流Ib分解成Ib(1)、Ib(2)、Ib(0),c相电流Ic分解成Ic(1)、Ic(2)、Ic(0)。其中Ia(1)、Ib(1)、Ic(1)一组对称的相量,称为正序分量电流;Ia(2)、Ib(2)、Ic(2)也是一组对称的相量。但相序与正序相反,称为负序分量电流;Ia(0)、Ib(0)、Ic(0)也是一组对称的相量,三个相量完全相等,称为零序分量电流。 由式(4—8)知,只有当三相电流之和不等于零时才有零序分量。如果三相系统是三角形接法,或者是没有中性线(包括以地代中性线)的星形接法,三相线电流之和总为零,不可能有零序分量电流。只有在有中性线的星形接法中才有可能有Ia+Ib+Ic≠0,则中性线中的电流In=Ia+Ib+Ic=3Ia(0),即为三倍零序电流,如图4—2所示。可见,零序电流必须以中性线作为通路。 三相系统的线电压值和总为零,因此,三个不对称的线电压分解成对称分量时,其中总不会有零序分量。

实验一 典型环节的MATLAB仿真汇总

实验一 典型环节的MATLAB 仿真 一、实验目的 1.熟悉MATLAB 桌面和命令窗口,初步了解SIMULINK 功能模块的使用方法。 2.通过观察典型环节在单位阶跃信号作用下的动态特性,加深对各典型环节响应曲线的理解。 3.定性了解各参数变化对典型环节动态特性的影响。 二、SIMULINK 的使用 MATLAB 中SIMULINK 是一个用来对动态系统进行建模、仿真和分析的软件包。利用SIMULINK 功能模块可以快速的建立控制系统的模型,进行仿真和调试。 1.运行MATLAB 软件,在命令窗口栏“>>”提示符下键入simulink 命令,按Enter 键或在工具栏单击按钮,即可进入如图1-1所示的SIMULINK 仿真 环境下。 2.选择File 菜单下New 下的Model 命令,新建一个simulink 仿真环境常规模板。 3.在simulink 仿真环境下,创建所需要的系统 三、实验内容 按下列各典型环节的传递函数,建立相应的SIMULINK 仿真模型,观察并记录其单位阶跃响应波形。 ① 比例环节1)(1=s G 和2)(1=s G 实验处理:1)(1=s G SIMULINK 仿真模型

波形图为: 实验处理:2)(1=s G SIMULINK 仿真模型 波形图为: 实验结果分析:增加比例函数环节以后,系统的输出型号将输入信号成倍数放大. ② 惯性环节11)(1+= s s G 和15.01)(2+=s s G 实验处理:1 1 )(1+=s s G SIMULINK 仿真模型

波形图为: 实验处理:1 5.01 )(2+= s s G SIMULINK 仿真模型 波形图为: 实验结果分析:当1 1 )(1+= s s G 时,系统达到稳定需要时间接近5s,当

层次分析法matlab程序举例

层次分析法程序举例: A=[1 1/7 1/5 2 4 1/3;7 1 3 5 5 3;5 1/3 1 5 5 3;1/2 1/3 1/5 1 2 1/3;1/4 1/5 1/5 1/2 1 1/5;3 1/3 1/3 3 5 1]; [v,d]=eig(A); eigenvalue=diag(d); lamda=max(eigenvalue); cil=(lamda-6)/5; crl=cil/1.26; w1=v(:,1)/sum(v(:,1)) 挑选合适的工作。经双方恳谈,已有三个单位表示愿意录用某毕业生。该生根据已有信息建立了一个层次结构模型,如下图所示。 程序: A=[1 1/7 1/5 2 4 1/3;7 1 3 5 5 3;5 1/3 1 5 5 3;1/2 1/3 1/5 1 2 1/3;1/4 1/5 1/5 1/2 1 1/5;3 1/3 1/3 3 5 1]; [v,d]=eig(A); eigenvalue=diag(d); lamda=max(eigenvalue); ci=(lamda-6)/5

cr=ci/1.26 w1=v(:,1)/sum(v(:,1)) B1=[1 1/4 1/2;4 1 3;2 1/3 1]; [v,d]=eig(B1); eigenvalue=diag(d); lamda=max(eigenvalue); cil1=(lamda-3)/2 cr1=cil1/0.52 b1w=v(:,1)/sum(v(:,1)) B2=[1 1/4 1/5;4 1 1/2;5 2 1]; [v,d]=eig(B2); eigenvalue=diag(d); lamda=max(eigenvalue); cil2=(lamda-3)/2 cr2=cil2/0.52 b2w=v(:,1)/sum(v(:,1)) B3=[1 1/2 2; 2 1 3;1/2 1/3 1]; [v,d]=eig(B3); eigenvalue=diag(d);

对称分量法(正序、负序、零序)

对称分量法 正序:A相领先B相120度,B相领先C相120度,C相领先A相120度。 负序:A相落后B相120度,B相落后C相120度,C相落后A相120度。 零序:ABC三相相位相同,哪一相也不领先,也不落后。 三相短路故障和正常运行时,系统里面是正序。 单相接地故障时候,系统有正序、负序和零序分量。 两相短路故障时候,系统有正序和负序分量。 两相短路接地故障时,系统有正序、负序和零序分量 称分量法基本概念和简单计算 正常运行的电力系统,三相电压、三相电流均应基本为正相序,根据负荷情况(感性或容性),电压超前或滞后电流1个角度(Φ),如图1。 图1:正常运行的电力系统电压电流矢量图 对称分量法是分析电力系统三相不平衡的有效方法,其基本思想是把三相不平衡的电流、电压分解成三组对称的正序相量、负序相量和零序相量,这样就可把电力系统不平衡的问题转化成平衡问题进行处理。在三相电路中,对于任意一组不对称的三相相量(电压或电流),可以分解为3组三相对称的分量。

图2:正序相量、负序相量和零序相量(以电流为例) 当选择A相作为基准相时,三相相量与其对称分量之间的关系(如电流)为:IA=Ia1+Ia2+Ia0――――――――――――――――――――――――――○1 IB=Ib1+Ib2+Ib0=α2Ia1+αIa2 + Ia0――――――――――○2 IC=Ic1+Ic2+Ic0=α Ia1+α2Ia2+Ia0―――――――――――○3 对于正序分量:Ib1=α2 Ia1 ,Ic1=αIa1 对于负序分量:Ib2=αIa2 ,Ic2=α2Ia2 对于零序分量:Ia0= Ib0 = Ic0 式中,α为运算子,α=1∠120° 有α2=1∠240°, α3=1, α+α2+1=0 由各相电流求电流序分量: I1=Ia1= 1/3(IA +αIB +α2 IC) I2=Ia2= 1/3(IA +α2IB +αIC) I0=Ia0= 1/3(IA +IB +IC) 以上3个等式可以通过代数方法或物理意义(方法)求解。 以求解正序电流为例,对物理意义简单说明,以便于记忆: 求解正序电流,应过滤负序分量和零序分量。将IB逆时针旋转120°、IC逆时针旋转240°后,3相电流相加后得到3倍正序电流,同时,负序电流、零序电流被过滤,均为0。故I a1= 1/3(I A+αI B+α2 I C) 对应代数方法:○1式+α○2式+α2 ○3式易得:Ia1= 1/3(IA +αIB +α2 IC)。 实例说明: 例1、对某微机型保护装置仅施加A相电压60V∠0°,则装置应显示的电压序分量为:U1=U2=U0=1/3U A=20V∠0° 例2、对该装置施加正常电压,UA=60V∠0°,UB=60V∠240°,UC=60V∠120°,当C相断线时,U1=?U2=?U0=? 解:U1=Ua1= 1/3(UA +αUB +α2UC)=1/3(60V∠0°+ 1∠120°*60V∠240°) =40∠0°;(当C相断线时,接入装置的UC=0。) U2=Ua2= 1/3(UA +α2UB +αUC)=1/3(60V∠0°+ 1∠240°*60V∠240°)=20∠60°; U0=Ua0= 1/3(UA + UB +UC)=1/3(60V∠0°+ 60V∠240°)=20∠300°。 正序、负序、零序的出现是为了分析在系统电压、电流出现不对称现象时,把三相的不对称分量分解成对称分量(正、负序)及同向的零序分量。只要是三相系统,就能分解出上述三个分量(有点象力的合成与分解,但很多情况下某个分量的数值为零)。对于理想的电力系统,由于三相对称,因此负序和零序分量的数值都为零(这就是我们常说正常状态下只有正序分量的原因)。当系统出现故障时,三相变得不对称了,这时就能分解出有幅值的负序和零序分量度了(有时只有其中的一种),因此通过检测这两个不应正常出现的分量,就可以知到系统出了毛病(特别是单相接地时的零序分量)。下面再介绍用作图法简单得出各分量幅值与相角的方法,先决条件是已知三相的电压或电流(矢量值),当然实际工程上是直接测各分量的。由于上不了图,请大家按文字说明在纸上画图。 从已知条件画出系统三相电流(用电流为例,电压亦是一样)的向量图(为看很清楚,不要画成太极端)。 1)求零序分量:把三个向量相加求和。即A相不动,B相的原点平移到A相的顶端(箭头处),注意B相只是平移,不能转动。同方法把C相的平移到B 相的顶端。此时作A相原点到C相顶端的向量(些时是箭头对箭头),这个向量就

LMMSE算法信道均衡MATLAB仿真

一.信道均衡的概念 实际的基带传输系统不可能完全满足无码间串扰传输条件,因而码间串扰是不可避免的。当串扰严重时,必须对系统的传输函数 进行校正,使其达到或接近无码间串扰要求的特性。理论和实践表明,在基带系统中插入一种可调滤波器就可以补偿整个系统的幅频,和相频特性从而减小码间串扰的影响这个对系统校正的过程称为均衡,实现均衡的滤波器称为均衡器。 均衡分为频域均衡和时域均衡。频域均衡是从频率响应考虑,使包括均衡器在内的整个系统的总传输函数满足无失真传输条件。而时域均衡,则是直接从时间响应考虑,使包括均衡器在内的整个系统的冲激响应满足无码间串扰条件。 频域均衡在信道特性不变,且传输低速率数据时是适用的,而时域均衡可以根据信道特性的变化进行调整,能够有效地减小码间串扰,故在高速数据传输中得以广泛应用。 时域均衡的实现方法有多种,但从实现的原理上看,大致可分为预置式自动均衡和自适应式自动均衡。预置式均衡是在实际传数之前先传输预先规定的测试脉冲(如重复频率很低的周期性的单脉冲波形),然后按“迫零调整原理”自动或手动调整抽头增益;自适应式均衡是在传数过程中连续测出距最佳调整值的误差电压,并据此电压去调整各抽头增益。一般地,自适应均衡不仅可以使调整精度提高,而且当信道特性随时间变化时又能有一定的自适应性,因此很受重视。这种均衡器过去实现起来比较复杂,但随着大规模、超大规模集成电路和微处理机的应用,其发展十分迅速。 二.信道均衡的应用 1.考虑如图所示的基带等效数据传输系统,发送信号k x 经过ISI 失真信道传输,叠加高斯加性噪声。 图1基带等效数据传输模型 设发送信号采用QPSK 调制,即(1)k x j =±±ISI 信道的冲击响应以向量的形式表示为h 2211[,,,]T L L L h h h --+=???。典型的ISI 信道响应向量有三种: h [0.04,0.05,0.07,0.21,0.5,0.72,0.36,0,0.21,0.03,0.07]T A =--- h [0.407,0.815,0.407]T B = h [0.227,0.46,0.6888,0.46,0.227]T C = k ω为实部与虚部独立的复高斯白噪声,其均值为零,方差为2 ωσ。 2.实现目的

神经网络学习算法matlab仿真

东南大学自动化学院 智能控制概论 神经网络学习算法研究 学院: 姓名: 学号: 日期:

目录 1 任务要求叙述 ..................................................... 错误!未定义书签。 2 系统分析及设计原理 ......................................... 错误!未定义书签。 3 设计实现.............................................................. 错误!未定义书签。4仿真验证.. (6) 5 讨论与分析.......................................................... 错误!未定义书签。

一.任务要求叙述 (1)任务 (a) 运行算法,观察和分析现有学习算法的性能; clear all;close all; nu=20;pi=3.1415926; for i=1:nu p(i)=2*pi*i/nu; t(i)=0.5*(1+cos(p(i))); end minmax=[min(p(:)) max(p(:))] net = newff([ 0 7],[6 1],{'logsig' 'purelin'},'traingd');% traingd traingdm trainlm net.trainParam.epochs = 10000; net.trainParam.goal = 0.0001; net.trainParam.show=200; net.trainParam.lr=0.1; net.trainParam.mc=0.6; %0.9 default value; available for momentum net = train(net,p,t); y1 = sim(net,p); figure(2); plot(p,t,'*-',p,y1,'r--') %************** test data ****************** nu2=nu*3/2; for i=1:(nu2) p2(i)=2*pi*i/(nu2); t2(i)=0.5*(1+cos(p2(i))); end y2 = sim(net,p2); figure(3); plot(t2,'*-');hold on; plot(y2,'r'); xlabel('times');ylabel('outputs'); figure(4); plot(t2-y2); xlabel('times');ylabel('error'); (b) 为了进一步提高学习逼近效果,可以采取那些措施,调节规律如何?根据所提的每种措施,修改算法程序,给出仿真效果验证、过程以及相应的曲线图,给出适当的评述;(c) 联系、结合前向神经网络的算法样本学习、测试等过程,谈谈本人对神经网络系统的一些认识和看法。 (2)要求 提交完整的报告,包括:封面(题目、个人学号姓名等信息)、目录、任务要求叙述、系

层次分析法计算权重在matlab中的实现

信息系统分析与设计作业 层次分析法确定绩效评价权重在matlab中的实现 小组成员:孙高茹、王靖、李春梅、郭荣1 程序简要概述 编写程序一步实现评价指标特征值lam、特征向量w以及一致性比率CR的求解。 具体的操作步骤是:首先构造评价指标,用专家评定法对指标两两打分,构建比较矩阵,继而运用编写程序实现层次分析法在MATLAB中的应用。 通过编写MATLAB程序一步实现问题求解,可以简化权重计算方法与步骤,减少工作量,从而提高人力资源管理中绩效考核的科学化电算化。 2 程序在matlab中实现的具体步骤 function [w,lam,CR] = ccfx(A) %A为成对比较矩阵,返回值w为近似特征向量 % lam为近似最大特征值λmax,CR为一致性比率 n=length(A(:,1)); a=sum(A); B=A %用B代替A做计算 for j=1:n %将A的列向量归一化 B(:,j)=B(:,j)./a(j); end s=B(:,1); for j=2:n s=s+B(:,j); end c=sum(s);%计算近似最大特征值λmax w=s./c; d=A*w lam=1/n*sum((d./w)); CI=(lam-n)/(n-1);%一致性指标 RI=[0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45,1.49,1.51];%RI为随机一致

性指标 CR=CI/RI(n);%求一致性比率 if CR>0.1 disp('没有通过一致性检验'); else disp('通过一致性检验'); end end 3 案例应用 我们拟构建公司员工绩效评价分析权重,完整操作步骤如下: 3.1构建的评价指标体系 我们将影响员工绩效评定的指标因素分为:打卡、业绩、创新、态度与品德。 3.2专家打分,构建两两比较矩阵 A = 1.0000 0.5000 3.0000 4.0000 2.0000 1.0000 5.0000 3.0000 0.3333 0.2000 1.0000 2.0000 0.2500 0.3333 0.5000 1.0000 3.3在MATLAB中运用编写好的程序实现 直接在MATLAB命令窗口中输入 [w,lam,CR]=ccfx(A) 继而直接得出 d = 1.3035 2.0000 0.5145 0.3926 w = 0.3102 0.4691 0.1242 0.0966 lam =4.1687

层次分析法的MATLAB实现(20210228092712)

MATLAB教程网 第八章层次分析法 层次分析法(Analytic Hierarchy Process,简称AHP )是对一些较为复杂、较为模糊的问题作出决策的简易方法,它特别适用于那些难于完全定量分析的问题。它是美国运筹学家T. L. Saaty 教授于70年代初期提出的一种简便、灵活而又实用的多准则决策方法。 MATLAB教程网 § 1层次分析法的基本原理与步骤 人们在进行社会的、经济的以及科学管理领域问题的系统分析中,面临的常常是一个由相互关联、相互制约的众多因素构成的复杂而往往缺少定量数据的系统。层次分析法为这类问题的决策和排序提供了一种新的、简洁而实用的建模方法。 运用层次分析法建模,大体上可按下面四个步骤进行: (i)建立递阶层次结构模型; (ii)构造出各层次中的所有判断矩阵; (iii)层次单排序及一致性检验; (iv)层次总排序及一致性检验。 下面分别说明这四个步骤的实现过程。 1.1递阶层次结构的建立与特点 应用AHP分析决策问题时,首先要把问题条理化、层次化,构造出一个有层次的结构模型。在这个模型下,复杂问题被分解为元素的组成部分。这些元素又按其属性及关系形成若干层次。上一层次的元素作为准则对下一层次有关元素起支配作用。这些层次可以分为三类: (i)最高层:这一层次中只有一个元素,一般它是分析问题的预定目标或理想结果,因此也称为目标层。 (ii )中间层:这一层次中包含了为实现目标所涉及的中间环节,它可以由若干个层次组成,包括所需考虑的准则、子准则,因此也称为准则层。 (iii )最底层:这一层次包括了为实现目标可供选择的各种措施、决策方案等,因此也称为措施层或方案层。 递阶层次结构中的层次数与问题的复杂程度及需要分析的详尽程度有关,一般地层次数不受限制。每一层次中各元素所支配的元素一般不要超过9个。这是因为支配 的元素过多会给两两比较判断带来困难。 下面结合一个实例来说明递阶层次结构的建立。 例1假期旅游有R、F2、F3 3个旅游胜地供你选择,试确定一个最佳地点。在此问题中,你会根据诸如景色、费用、居住、饮食和旅途条件等一些准则去反复比较3个侯选地点。可以建立如下的层次结构模型。 目标层0 选择旅游地

相关文档
最新文档