文档视界 最新最全的文档下载
当前位置:文档视界 › 动态规划matlab仿真实例整理

动态规划matlab仿真实例整理

动态规划matlab仿真实例整理
动态规划matlab仿真实例整理

动态规划在火力分配中地应用.

1.问题描述

设有m个目标,目标价值(重要性和危害性)各不相同,用数值A(K=1,K

=,其n枚导弹突袭,导弹击毁目标地概率P2,..m)表

示,计划用K为向目标发射地导弹数,问是常数,取决于导弹地特性与目标地性质;中题:做出方案使预期地突击效果最大.

2.问题建模

上述问题可以表述为

约束条件为

(为非负整数)

3.算法描述

),和(n=5am=4下面通过一个实例说明:设目标数目为4(),导弹为5K取值情况如下表所示:表1:A取值情况k

4 2 3 1 K 目标 3 6 7 8

0.9

0.3

0.2

将火力分配可分为4个阶段,每个阶段指标函数为:

可能取值为0,1,2,3,4,5,将函数值带人如下表:表2函数值

u

0 0 0 0 0

1.79 1 1.81 1.45

2.36

2.51 2

3.16 2.64 3.79

2.81 4.66 3 4.15

3.61

2.93 4 4.89 5.19 4.41

5

5.44

5.06 5.51

动态规划问题基本方程为:

c

=0

逐次向前推一级

K=4

K=3

K=2

K=1

()

地最大值然后反推回去就可以获得最优地分配方案只需要求解4.Matlab仿

真求解

地最大值,对应取值为整数,可以采用动态规划地方法,获得与因为

地最优方案

function[p_opt,fval]=dynprog(x,DecisFun,SubObjFun,TransFun,ObjFun)

%求解动态规划问题最小值函数

k=length(x(1,:)) %判断决策级数

x_isnan=~isnan(x)。 % 非空状态矩阵

t_vubm=inf*ones(size(x))。 % 性能指标中间矩阵

f_opt=nan*ones(size(x))。 % 总性能指标矩阵

d_opt=f_opt。 %每步决策矩阵

tmp1=find(x_isnan(:,k))。 % 最后一步状态向量

tmp2=length(tmp1)。 % 最后一步状态个数

for i=1:tmp2

u=feval(DecisFun,k,x(tmp1(i),k))。

tmp3=length(u)。%决策变量

for j=1:tmp3 % 求出当前状态下所有决策地最小性能指标

tmp=feval(SubObjFun,k,x(tmp1(i),k),u(j))。

if tmp <= t_vubm(i,k) %t_vub

f_opt(i,k)=tmp。

d_opt(i,k)=u(j)。

t_vubm(i,k)=tmp。

end。

end。

end

for ii=k-1:-1:1

tmp10=find(x_isnan(:,ii))。

tmp20=length(tmp10)。

for i=1:tmp20 %求出当前状态下所有可能地决策

u=feval(DecisFun,ii,x(tmp10(i),ii))。

tmp30=length(u) 。

for j=1:tmp30 % 求出当前状态下所有决策地最小性能指标

tmp00=feval(SubObjFun,ii,x(tmp10(i),ii),u(j))。 % 单步性能指标

tmp40=feval(TransFun,ii,x(tmp10(i),ii),u(j))。 % 下一状态

tmp50=x(:,ii+1)-tmp40。 % 找出下一状态在 x 矩阵地位置

tmp60=find(tmp50==0) 。

if~isempty(tmp60)

if nargin<6 %矩阵不同需要修改nargin地值,很重要

tmp00=tmp00+f_opt(tmp60(1),ii+1)。 % set the default object value else

tmp00=feval(ObjFun,tmp00,f_opt(tmp60(1),ii+1))。

end %当前状态地性能指标

if tmp00<=t_vubm(i,ii)

f_opt(i,ii)=tmp00。

d_opt(i,ii)=u(j)。

。 t_vubm(i,ii)=tmp00.

end。

end。

end。

end。

end

fval=f_opt(:,1)。

tmp0 = find(~isnan(fval))。

fval=fval(tmp0,1)。

p_opt=[]。tmpx=[]。tmpd=[]。tmpf=[]。

tmp01=length(tmp0)。

for i=1:tmp01

tmpd(i)=d_opt(tmp0(i),1)。

tmpx(i)=x(tmp0(i),1)。

tmpf(i)=feval(SubObjFun,1,tmpx(i),tmpd(i))。

p_opt(k*(i-1)+1,[1,2,3,4])=[1,tmpx(i),tmpd(i),tmpf(i)]。

for ii=2:k

tmpx(i)=feval(TransFun,ii,tmpx(i),tmpd(i))。

tmp1=x(:,ii)-tmpx(i)。tmp2=find(tmp1==0)。

if ~isempty(tmp2)

tmpd(i)=d_opt(tmp2(1),ii)。

end

tmpf(i)=feval(SubObjFun,ii,tmpx(i),tmpd(i))。

p_opt(k*(i-1)+ii,[1,2,3,4])=[ii,tmpx(i),tmpd(i),tmpf(i)]。

end。

end。

下面编写四个函数:

function u = DecisF1( k,x ) %决策函数

if k==4

u=x。

else

u=0:x。

end

function y = TransF1( k,x,u )%状态转移方程

y=x-u。

function v = SubObjF1( k,x,u )%阶段k地指标函数

a=[0.2,0.3,0.5,0.9]。

A=[8,7,6,3]。

v=A(k)*(1-exp(-a(k)*u))。

v=-v。 %max变为min

function y = ObjF1( v,f )%基本方程中地函数

y=v+f。

y=-y。%max变为min

测试代码:

。clear

n=5。

x1=[n。nan*ones(n,1)]。

x2=0:n。x2=x2'。x=[x1,x2,x2,x2]。

[p,f]=dynprog(x,'DecisF1','SubObjF1','TransF1','ObjF1')

%p为分配方案,f为结果

5.Matlab仿真结果分析

运行结果显示:

P为方案:

即对目标1发射1枚导弹,对目标2发射1枚,对目标3发射2枚,对目标4发生1枚导弹,能获得最大效能.

f为最大地效能:

即在这种分配下地最大效能为8.8374

现代信号处理Matlab仿真——例611

例6.11 利用卡尔曼滤波估计一个未知常数 题目: 设已知一个未知常数x 的噪声观测集合,已知噪声v(n)的均值为零, 方差为 ,v(n)与x 不相关,试用卡尔曼滤波估计该常数 题目分析: 回忆Kalman 递推估计公式 由于已知x 为一常数,即不随时间n 变化,因此可以得到: 状态方程: x(n)=x(n-1) 观测方程: y(n)=x(n)+v(n) 得到A(n)=1,C(n)=1, , 将A(n)=1,代入迭代公式 得到:P(n|n-1)=P(n-1|n-1) 用P(n-1)来表示P(n|n-1)和P(n-1|n-1),这是卡尔曼增益表达式变为 从而 2v σ1??(|1)(1)(1|1)(|1)(1)(1|1)(1)()()(|1)()[()(|1)()()]???(|)(|1)()[()()(|1)](|)[()()](|1)H w H H v x n n A n x n n P n n A n P n n A n Q n K n P n n C n C n P n n C n Q n x n n x n n K n y n C n x n n P n n I K n C n P n n --=----=----+=--+=-+--=--2()v v Q n σ=()0w Q n =(|1)(1)(1|1)(1)()H w P n n A n P n n A n Q n -=----+21 ()(|1)[(|1)]v K n P n n P n n σ-=--+22(1)()[1()](1)(1)v v P n P n K n P n P n σσ-=--=-+

Matlab仿真实例-卫星轨迹

卫星轨迹 一.问题提出 设卫星在空中运行的运动方程为: 其中是k 重力系数(k=401408km3/s)。卫星轨道采用极坐标表示,通过仿真,研究发射速度对卫星轨道的影响。实验将作出卫星在地球表面(r=6400KM ,θ=0)分别以v=8KM/s,v=10KM/s,v=12KM/s 发射时,卫星绕地球运行的轨迹。 二.问题分析 1.卫星运动方程一个二阶微分方程组,应用Matlab 的常微分方程求解命令ode45求解时,首先需要将二阶微分方程组转换成一阶微分方程组。若设,则有: 2.建立极坐标如上图所示,初值分别为:卫星径向初始位置,即地球半径:y(1,1)=6400;卫星初始角度位置:y(2,1)=0;卫星初始径向线速度:y(3,1)=0;卫星初始周向角速度:y(4,1)=v/6400。 3.将上述一阶微分方程及其初值带入常微分方程求解命令ode45求解,可得到一定时间间隔的卫星的径向坐标值y(1)向量;周向角度坐标值y(2)向量;径向线速度y(3)向量;周向角速度y(4)向量。 4.通过以上步骤所求得的是极坐标下的解,若需要在直角坐标系下绘制卫星的运动轨迹,还需要进行坐标变换,将径向坐标值y(1)向量;周向角度坐标值y(2)向量通过以下方程转换为直角坐标下的横纵坐标值X,Y 。 5.卫星发射速度速度的不同将导致卫星的运动轨迹不同,实验将绘制卫星分别以v=8KM/s ,v=10KM/s ,v=12KM/s 的初速度发射的运动轨迹。 三.Matlab 程序及注释 1.主程序 v=input('请输入卫星发射速度单位Km/s :\nv=');%卫星发射速度输入。 axis([-264007000-1000042400]);%定制图形输出坐标范围。 %为了直观表达卫星轨迹,以下语句将绘制三维地球。 [x1,y1,z1]=sphere(15);%绘制单位球。 x1=x1*6400;y1=y1*6400;???????-=+-=dt d dt dr r dt d dt d r r k dt r d θ θθ2)(2 22222θ==)2(,)1(y r y ?????????????**-=**+*-===)1(/)4()3(2)4()4()4()1()1()1()3()4()2() 3()1(y y y dt dy y y y y y k dt dy y dt dy y dt dy ???*=*=)] 2(sin[)1(Y )]2(cos[)1(X y y y y

MATLAB实现通信系统仿真实例

补充内容:模拟调制系统的MATLAB 仿真 1.抽样定理 为了用实验的手段对连续信号分析,需要先对信号进行抽样(时间上的离散化),把连续数据转变为离散数据分析。抽样(时间离散化)是模拟信号数字化的第一步。 Nyquist 抽样定律:要无失真地恢复出抽样前的信号,要求抽样频率要大于等于两倍基带信号带宽。 抽样定理建立了模拟信号和离散信号之间的关系,在Matlab 中对模拟信号的实验仿真都是通过先抽样,转变成离散信号,然后用该离散信号近似替代原来的模拟信号进行分析的。 【例1】用图形表示DSB 调制波形)4cos()2cos(t t y ππ= 及其包络线。 clf %%计算抽样时间间隔 fh=1;%%调制信号带宽(Hz) fs=100*fh;%%一般选取的抽样频率要远大于基带信号频率,即抽样时间间隔要尽可能短。 ts=1/fs; %%根据抽样时间间隔进行抽样,并计算出信号和包络 t=(0:ts:pi/2)';%抽样时间间隔要足够小,要满足抽样定理。 envelop=cos(2*pi*t);%%DSB 信号包络 y=cos(2*pi*t).*cos(4*pi*t);%已调信号 %画出已调信号包络线 plot(t,envelop,'r:','LineWidth',3); hold on plot(t,-envelop,'r:','LineWidth',3); %画出已调信号波形 plot(t,y,'b','LineWidth',3); axis([0,pi/2,-1,1])% hold off% xlabel('t'); %写出图例 【例2】用图形表示DSB 调制波形)6cos()2cos(t t y ππ= 及其包络线。 clf %%计算抽样时间间隔 fh=1;%%调制信号带宽(Hz) fs=100*fh;%抽样时间间隔要足够小,要满足抽样定理。 ts=1/fs; %%根据抽样时间间隔进行抽样

MATLAB电路仿真实例

题14.14 图(a)所示电路,已知 V )2cos(15S t u =二端口网络阻抗参数矩阵 Ω?? ????=46j 6j 10Z 求ab 端戴维南等效电路并计算电压o u 。 u -+o u 图题14.14 (一)手动求解: 将网络N 用T 型电路等效,如图(b)所示 S U +-o U 等效阻抗 Ω=-+-?+ -=4.6j615j6j6)15(6j 6j 4i Z 开路电压 V 2j302 15j6j6105j6OC =?∠?+-+=U V 1482 18.3j46.42j3j4j4Z j4OC o ?∠=+?=?+=U U i

所以 )1482cos(18.3o ?+=t u V (二)Matlab 仿真: ⒈分析:本次仿真需输入各阻抗Zl 、Z1、Z2、Z3、Z4以及激励源Us 的参数值,仿真结果需输出开路电压Uoc 、等效阻抗Zi 以及电感两端电压U0的幅值和相位信息,并绘制Uoc ,U0的值随时间变化的波形曲线。其中各元件与原图的对应关系如下图所示: ⒉编辑M 文件的源程序如下: clear %清空自定义变量 z1=4-6j;z2=6j;z3=10-6j;z4=5;us=15*exp(j*0);zl=4j;%输入各元件参数 zi=z1+(z2*(z3+z4)/(z2+z3+z4));%等效阻抗zi 的计算表达式uoc=us*z2/(z2+z3+z4);%开路电压uoc 的计算表达式u0=zl/(zi+zl)*uoc;%电感两端电压uo 的计算表达式disp('The magnitude of zi is'); %在屏幕上显示“The magnitude of zi is ”disp(abs(zi)) %显示等效阻抗zi 的模disp('The phase of zi is'); %在屏幕上显示“The phase of zi is ”disp(angle(zi)*180/pi)%显示等效阻抗zi 的辐角 disp('The magnitude of uoc is'); %在屏幕上显示“The magnitude of uoc is ” disp(abs(uoc))%显示开路电压uoc 的模

matlab-SIMULINK仿真实例资料

二并联杆数控螺旋面钻头尖刃磨机的机构仿真 一、仿真原理一、实训题目:全自动洗衣机控制系统 实训目的及要求: 1、掌握欧姆龙PLC的指令,具有独立分析和设计程序的能力 2、掌握PLC梯形图的基本设计方法 3、培养分析和解决实际工程问题的能力 4、培养程序设计及调试的能力 5、熟悉传输带控制系统的原理及要求 实训设备:: 1、OMRON PLC及模拟实验装置1台 2、安装CX-P编程软件的PC机1台 3、PC机PLC通讯的RS232电缆线1根 实训内容: 1、分析工艺过程,明确控制要求 (1)按下启动按扭及水位选择开关,相应的显示灯亮,开始进水直到高(中、低)水位,关水。 (2)2秒后开始洗涤。 (3)洗涤时,正转30秒停2秒;然后反转30秒停2秒。 (4)循环5次,总共320秒,然后开始排水。排水后脱水30秒。 图1 全自动洗衣机控制 2、统计I/O点数并选择PLC型号 输入:系统启动按钮一个,系统停止按钮一个,高、中、低水位控制开关三个,高、中、低液位传感器三个,以及排水液位传感器一个。

输出:进出水显示灯一盏,高、中、低水位显示灯各一盏,电机正、反转显示灯各一盏,排水、脱水显示灯灯各一盏。 PLC的型号:输入一共有9个,考虑到留有15%~20%的余量即9×(1+15%)=10.35,取整数10,所以共需10个输入点。输出共有8个,8×(1+15%)=9.2,取整数9,所以共需9个输出点。可以选OMRON公司的CPM1A/CPM2A 型PLC就能满足此例的要求。 3、I/O分配 表1 全自动洗衣机控制I/O分配表 输入输出 地址名称地址名称 00000 启动系统按钮01000 排水显示灯 00001 高水位选择按钮01001 脱水显示灯 00002 中水位选择按钮01002 进、出水显示灯 00003 低水位选择按钮01003 高水位显示灯 00004 排水液位传感器01004 中水位显示灯 00005 停止系统按钮01005 低水位显示灯 00006 高水位液位传感器01006 电机正转显示灯 00007 中水位液位传感器01007 电机反转显示灯 00008 低水位液位传感器 4、PLC控制程序设计及分析 实现功能:当按下按钮00000,中间继电器20000得电并自锁,按下停止按钮00005,中间继电器20000掉电。中间继电器20000为系统总启动。 实现功能:当按下按钮00001,中间继电器20001得电并自锁;当中间继电器20002、20003、20004、20007任意一个为ON,或按下停止按钮00005,或01000、01001为ON时,中间继电器20001掉电。

MATLAB电路仿真实例

题14.14 图(a)所示电路,已知 二端口网络阻抗参数矩阵 求ab 端戴维南等效电路并计算电压。 (一) 手动求解: 将网络N 用T 型电路等效,如图(b)所示 等效阻抗 开路电压 V )2cos(15S t u =Ω??????=46j 6j 10Z o u u -+o u (a)图题14.14 S U +-o U Ω=-+-?+-=4.6j615j6j6)15(6j 6j 4i Z V 2j30215j6j6105j6OC =?∠?+-+=U V 148218.3j46.42j3j4j4Z j4OC o ?∠=+?=?+=U U i

所以 V (二) Matlab 仿真: ⒈分析:本次仿真需输入各阻抗Zl 、Z1、Z2、Z3、Z4以及激励源Us 的参数值,仿真结果需输出开路电压Uoc 、等效阻抗Zi 以及电感两端电压U0的幅值和相位信息,并绘制Uoc ,U0的值随时间变化的波形曲线。 其中各元件与原图的对应关系如下图所示: ⒉编辑M 文件的源程序如下: clear %清空自定义变量 z1=4-6j;z2=6j;z3=10-6j;z4=5;us=15*exp(j*0);zl=4j; %输入各元件参数 zi=z1+(z2*(z3+z4)/(z2+z3+z4)); %等效阻抗zi 的计算表达式 uoc=us*z2/(z2+z3+z4); %开路电压uoc 的计算表达式 u0=zl/(zi+zl)*uoc; %电感两端电压uo 的计算表达式 disp('The magnitude of zi is'); %在屏幕上显示“The magnitude of zi is ” disp(abs(zi)) %显示等效阻抗zi 的模 disp('The phase of zi is'); %在屏幕上显示“The phase of zi is ” disp(angle(zi)*180/pi) %显示等效阻抗zi 的辐角 disp('The magnitude of uoc is'); %在屏幕上显示“The magnitude of uoc is ” disp(abs(uoc)) %显示开路电压uoc 的模 disp('The phase of uoc is'); %在屏幕上显示“The magnitude of uoc is ” ) 1482cos(18.3o ?+=t u

MATLAB仿真实例

一、实验目的 (1) 二、实验题目 (1) 三、实验内容 (1) 3.1傅里叶变换与傅里叶反变换 (1) 3.2题目一:正弦信号波形及频谱 (2) 3.2.1仿真原理及思路 (2) 3.2.2程序流程图 (3) 3.2.3仿真程序及运行结果 (3) 3.2.4实验结果分析 (5) 3.3题目二:单极性归零(RZ)波形及其功率谱 (5) 3.3.1仿真原理及思路 (5) 3.3.2程序流程图 (6) 3.3.3仿真程序及运行结果 (6) 3.3.4实验结果分析 (8) 3.4题目三:升余弦滚降波形的眼图及其功率谱 (8) 3.4.1仿真原理及思路 (8) 3.4.2程序流程图 (8) 3.4.3仿真程序及运行结果 (8) 3.4.4实验结果分析: (10) 3.5题目四:完成PCM编码及解码的仿真 (11) 3.5.1仿真原理及思路 (11) 3.5.2程序流程图 (12) 3.5.3仿真程序及运行结果 (12) 3.5.4实验结果分析 (15) 3.6附加题一:最佳基带系统的Pe~Eb\No曲线,升余弦滚降系数a=0.5,取 样值的偏差是Ts/4 (16) 3.6.1仿真原理及思路 (16) 3.6.2程序流程图 (16) 3.6.3仿真程序及运行结果 (16) 3.6.4实验结果分析 (18) 3.7附加题二:试作出Pe~Eb/No曲线。升余弦滚降系数a=0.5,取样时间无 偏差,但信道是多径信道,C(f)=|1-0.5-j2 ft|,t=T s/2 (18) 3.7.1仿真原理及思路 (18) 3.7.2程序流程图 (19) 3.7.3仿真程序及运行结果 (19) 3.7.4实验结果分析 (21) 四、实验心得 (21)

matlab仿真实例

matlab仿真实例 实验五 MATLAB及仿真实验一、控制系统的时域分析 (一) 稳定性 1、系统传递函数为 G(s),试判断其稳定性。 程序: >> num=[3,2,5,4,6]; >> den=[1,3,4,2,7,2]; >> sys=tf(num,den); >> figure(1); >> pzmap(sys); >> title('零极点图') 由图可知:在S右半平面有极点,因此可知系统是不稳定的。 2、用MATLAB求出G(s)=(s^2+2*s+2)/(s^4+7*s^3+5*s+2)的极点。程序及结果: >> sys=tf([1,2,2],[1,7,3,5,2]); >> p=pole(sys)

p = -6.6553 0.0327 + 0.8555i 0.0327 - 0.8555i -0.4100 (二)阶跃响应 1、二阶系统G(s)=10/s^2+2*s+10 1)键入程序,观察并记录单位阶跃响应曲线: 程序: >> sys=tf(10,[1,2,10]); >> step(sys); >> title('G(s)=10/s^2+2*s+10单位阶跃响应曲线') 2)计算系统闭环跟、阻尼比、无阻尼振荡频率,并记录: 程序及结果: >> sys=tf(10,[1,2,10]); >> p=pole(sys)

p = -1.0000 + 3.0000i -1.0000 - 3.0000i >> [wn,z]=damp(sys) wn = 3.1623 3.1623 z = 0.3162 0.3162 3)记录实际测取的峰值大小,峰值时间和过渡过程时间,并填表: 实际值理论值 峰值Cmax 1.35s 峰值时间tp 1.05s 过渡时间 +5% 3.54s ts +2% 3.18s 程序: >> sys=tf(10,[1,2,10]); >> step(sys); >> title('G(s)=10/s^2+2*s+10单位阶跃响应曲线')

matlab仿真实例

实验五MATLAB及仿真实验 一、控制系统的时域分析 (一)稳定性 1、系统传递函数为G(s),试判断其稳定性。 程序: >> num=[3,2,5,4,6]; >> den=[1,3,4,2,7,2]; >> sys=tf(num,den); >> figure(1); >> pzmap(sys); >> title('零极点图') 由图可知:在S右半平面有极点,因此可知系统是不稳定的。 2、用MATLAB求出G(s)=(s^2+2*s+2)/(s^4+7*s^3+5*s+2)的极点。程序及结果: >> sys=tf([1,2,2],[1,7,3,5,2]); >> p=pole(sys) p = -6.6553 0.0327 + 0.8555i

0.0327 - 0.8555i -0.4100 (二)阶跃响应 1、二阶系统G(s)=10/s^2+2*s+10 1)键入程序,观察并记录单位阶跃响应曲线: 程序: >> sys=tf(10,[1,2,10]); >> step(sys); >> title('G(s)=10/s^2+2*s+10单位阶跃响应曲线') 2)计算系统闭环跟、阻尼比、无阻尼振荡频率,并记录:程序及结果: >> sys=tf(10,[1,2,10]); >> p=pole(sys) p = -1.0000 + 3.0000i -1.0000 - 3.0000i >> [wn,z]=damp(sys) wn = 3.1623 3.1623 z = 0.3162

0.3162 3)记录实际测取的峰值大小,峰值时间和过渡过程时间,并填表: >> sys=tf(10,[1,2,10]); >> step(sys); >> title('G(s)=10/s^2+2*s+10单位阶跃响应曲线') 4)修改参数,分别实现ξ=1和ξ=2的响应曲线,并记录: ξ=1: 程序:>> zeta=1; >> wn=sqrtm(10) wn = 3.1623 >> sys=tf(10,[1,2*wn*zeta,10]); >> step(sys) >> title('ξ=1响应曲线' ) (图见下页)

相关文档