r0=abs(z1-e)<=0.001; xx=r0.*x1; yy=r0.*y1; zz=r0.*z1; hold on subplot(1,2,2) plot3(xx(r0~=0),yy(r0~=0),zz(r0~=0));
时间: 2024-04-02 12:33:50 浏览: 10
这段代码是在画出三维空间中与平面 $z=e$ 相交的直线。具体来说,首先根据 $z1$ 与 $e$ 的差的绝对值是否小于等于 $0.001$,计算出一个逻辑数组 $r0$,其中满足条件的位置为 $1$,否则为 $0$。然后将 $x1$、$y1$、$z1$ 分别与 $r0$ 相乘,得到一个新的数组 $xx$、$yy$、$zz$,其中满足 $r0$ 为 $0$ 的位置,$xx$、$yy$、$zz$ 对应的元素也为 $0$。最后使用 plot3 函数画出 $(xx,yy,zz)$ 中满足 $r0$ 不为 $0$ 的点构成的直线。subplot(1,2,2) 表示将图形分为 $1$ 行 $2$ 列,并显示在第 $2$ 列。hold on 表示保持当前图形,并在其上添加后续的图形。最后的 axis、xlabel、ylabel、zlabel 是用来设置坐标轴的标签和范围的。
相关问题
给出如下一个三层的神经网络,x1=0.5; x2=0.7; w1=0.2; w2=0.4; w3=0.5; w4=0.3; w5=0.7; w6=0.5; w7=0.4; w8=0.2; w9=0.6, 激活函数f为Sigmod,损失函数为 ,目标值y为0.5,学习率α=0.4。
这个神经网络的结构不清楚,我假设它是一个具有两个输入节点、三个隐藏节点和一个输出节点的前馈神经网络,即输入层有两个节点,隐藏层有三个节点,输出层有一个节点。
首先进行前向传播计算,计算隐藏层的输出值:
z1 = x1 * w1 + x2 * w2 = 0.2 * 0.5 + 0.4 * 0.7 = 0.46
z2 = x1 * w3 + x2 * w4 = 0.5 * 0.5 + 0.3 * 0.7 = 0.44
z3 = x1 * w5 + x2 * w6 = 0.7 * 0.7 + 0.5 * 0.5 = 0.59
然后将隐藏层的输出值带入激活函数Sigmoid中,计算输出层的输出值:
y1 = f(z1 * w7 + z2 * w8 + z3 * w9) = f(0.46 * 0.4 + 0.44 * 0.2 + 0.59 * 0.6) = f(0.6666) = 0.661
计算损失函数的值:
L = (y - y1)^2 / 2 = (0.5 - 0.661)^2 / 2 = 0.025
然后进行反向传播,计算输出层的误差:
δ1 = (y1 - y) * f'(z1 * w7 + z2 * w8 + z3 * w9) = (0.661 - 0.5) * f'(0.6666) = 0.034
f'(x)表示Sigmoid函数的导数,即f'(x) = f(x) * (1 - f(x))。
然后计算隐藏层的误差:
δ2 = δ1 * w7 * f'(z1) = 0.034 * 0.4 * f'(0.46) = 0.008
δ3 = δ1 * w8 * f'(z2) = 0.034 * 0.2 * f'(0.44) = 0.005
δ4 = δ1 * w9 * f'(z3) = 0.034 * 0.6 * f'(0.59) = 0.009
最后根据误差计算权值的调整量:
Δw7 = -α * δ1 * z1 = -0.4 * 0.034 * 0.46 = -0.006
Δw8 = -α * δ1 * z2 = -0.4 * 0.034 * 0.44 = -0.005
Δw9 = -α * δ1 * z3 = -0.4 * 0.034 * 0.59 = -0.008
Δw1 = -α * δ2 * x1 = -0.4 * 0.008 * 0.5 = -0.002
Δw2 = -α * δ2 * x2 = -0.4 * 0.008 * 0.7 = -0.003
Δw3 = -α * δ3 * x1 = -0.4 * 0.005 * 0.5 = -0.001
Δw4 = -α * δ3 * x2 = -0.4 * 0.005 * 0.7 = -0.001
Δw5 = -α * δ4 * x1 = -0.4 * 0.009 * 0.7 = -0.003
Δw6 = -α * δ4 * x2 = -0.4 * 0.009 * 0.5 = -0.002
最后更新权值:
w1 = w1 + Δw1 = 0.2 - 0.002 = 0.198
w2 = w2 + Δw2 = 0.4 - 0.003 = 0.397
w3 = w3 + Δw3 = 0.5 - 0.001 = 0.499
w4 = w4 + Δw4 = 0.3 - 0.001 = 0.299
w5 = w5 + Δw5 = 0.7 - 0.003 = 0.697
w6 = w6 + Δw6 = 0.5 - 0.002 = 0.498
w7 = w7 + Δw7 = 0.4 - 0.006 = 0.394
w8 = w8 + Δw8 = 0.2 - 0.005 = 0.195
w9 = w9 + Δw9 = 0.6 - 0.008 = 0.592
这样就完成了一次训练的过程,可以根据需要进行多次训练,直到达到期望的精度。
已知十个无人机目标的三维坐标和威胁度,子母导弹的母舱飞行速度为500m/s,视场角15°,有效探测距离5km,子拦截弹以纯比例导引律进行制导,比例系数为3,母舱释放子拦截弹与子拦截弹稳定跟踪目标所需总时间为2s,计算出集群威胁重心后在距集群“重心3371m处坐标为(45841,3568,8006)释放子拦截弹,仿真步长0.001s,基于matlab建立仿真绘图代码
以下是基于Matlab的仿真绘图代码,供您参考:
```matlab
% 定义常量
v = 500; % 母舱飞行速度,单位m/s
fov = 15; % 视场角,单位°
R = 5000; % 有效探测距离,单位m
k = 3; % 比例系数
t_track = 2; % 母舱释放子拦截弹与子拦截弹稳定跟踪目标所需总时间,单位s
dt = 0.001; % 仿真步长,单位s
% 定义目标坐标和威胁度
targets = [x1, y1, z1, w1;
x2, y2, z2, w2;
...
x10, y10, z10, w10];
% 计算集群重心坐标
w_sum = sum(targets(:, 4));
x_cg = sum(targets(:, 1) .* targets(:, 4)) / w_sum;
y_cg = sum(targets(:, 2) .* targets(:, 4)) / w_sum;
z_cg = sum(targets(:, 3) .* targets(:, 4)) / w_sum;
% 计算子拦截弹发射角度和发射时刻
deltas = targets(:, 1:3) - [x_cg, y_cg, z_cg];
deltas_norm = vecnorm(deltas, 2, 2);
angles = acosd(dot(deltas, [1, 0, 0], 2) ./ deltas_norm);
idx = find(angles <= fov/2 & deltas_norm <= R);
if isempty(idx)
error('No target in sight.');
elseif length(idx) > 1
[~, idx_min] = min(targets(idx, 4));
idx = idx(idx_min);
end
delta = deltas(idx, :);
delta_norm = deltas_norm(idx);
v_para = v * cosd(angles(idx));
t_launch = delta_norm / v_para;
% 计算子拦截弹制导量和制导时间
t_guide = linspace(t_launch, t_launch + t_track, t_track/dt);
delta_guide = delta .* k ./ (v_para * t_guide');
% 计算子拦截弹稳定跟踪时间和轨迹
t_stable = t_launch + t_track/2;
delta_stable = delta_guide(round(t_stable/dt), :);
x_stable = linspace(x_cg, x_cg + delta_stable(1), t_track/dt);
y_stable = linspace(y_cg, y_cg + delta_stable(2), t_track/dt);
z_stable = linspace(z_cg, z_cg + delta_stable(3), t_track/dt);
% 绘制图像
figure;
plot3(targets(:, 1), targets(:, 2), targets(:, 3), 'r*');
hold on;
plot3(x_cg, y_cg, z_cg, 'bo');
plot3(x_stable, y_stable, z_stable, 'g');
plot3(x_cg + delta(1), y_cg + delta(2), z_cg + delta(3), 'ko');
xlabel('x');
ylabel('y');
zlabel('z');
title('Interception Simulation');
legend('Targets', 'Cluster CG', 'Interceptor Trajectory', 'Interceptor Launch Point');
axis equal;
grid on;
```
其中,`x1, y1, z1, w1` 到 `x10, y10, z10, w10` 分别表示十个无人机目标的三维坐标和威胁度。在运行代码前,需要将这些变量替换为实际的值。运行后,会生成一个三维图像,显示出目标、集群重心、拦截弹轨迹和发射点等信息。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![BIN](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![xlsx](https://img-home.csdnimg.cn/images/20210720083732.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)