求大神看看,matlab中计算出来的结果是NaN+NANi,画图画不出来是怎么回事
%画出接收点在发射点之前时的所有一次反射线并统计数目,然后计算所有一次反射线的场强load('basic_var.mat')%把巷道的尺寸信息导入%runtunnel_m...
%画出接收点在发射点之前时的所有一次反射线并统计数目,然后计算所有一次反射线的场强
load('basic_var.mat')%把巷道的尺寸信息导入
% run tunnel_model;
%load('S_D.mat')%把收发点位置导入(收发点位置固定时将其导入)
sum1=0;
E1=[0,0,0];%设初始场强累加之前的值为0
x_s=1.5;y_s=0;z_s=3;y_d=0:1:140;
x_d=3;z_d=1.5;
for y_d=0:1:140
for f=[1,3,5,6]
[x_m,y_m,z_m] = mirror_point(x_s,y_s,z_s,f);%利用循环和子函数求出发射点关于所有平面的一级镜像点
[x_r,y_r,z_r,P] = validity_judgement(x_m,y_m,z_m,x_d,y_d,z_d,f); %判断所求镜像点的有效性
if P==1
[T]=block_test(x_r,y_r,z_r,x_d,y_d,z_d);%对路径之间的连线进行遮挡测试
if T==1
[T]=block_test(x_s,y_s,z_s,x_r,y_r,z_r);
if T==1
F=1;sum1=sum1+1;
% plot3([x_s x_r],[y_s y_r],[z_s z_r]);hold on;%画出有效反射路径
% plot3([x_r x_d],[y_r y_d],[z_r z_d]);hold on;
%计算接收点的场强
R=[x_r,y_r,z_r];
p11=sqrt((x_r-x_s)^2+(y_r-y_s)^2+(z_r-z_s)^2);%%%%计算发射点到反射点的路径长度
p12=sqrt((x_d-x_r)^2+(y_d-y_r)^2+(z_d-z_r)^2);%%%%计算反射点到接收点的路径长度
[e1u_i,e1h_i,e1u_r,e1h_r,R1_h,R1_u] = field_intensity(x_s,y_s,z_s,x_r,y_r,z_r,f);
[E1_i] = count_E1_i(x_s,y_s,z_s,x_r,y_r,z_r,f);%计算初始入射波的电场矢量
E1_p=R1_h*(dot(E1_i,e1h_i)*(p11/(p11+p12)))*e1h_r+R1_u*(dot(E1_i,e1u_i)*(p11/(p11+p12)))*e1u_r;
E1=E1+E1_p;%计算sum1条一次反射线的总场强
else
F=0;
end
else F=0;
end
else F=0;
end
end
E_dB=20*log10(sqrt(dot(E1,E1)));
end
plot(y_d,E_dB)%画出接收点场强随收发天线距离的变化
title('接收点处总场强随收发距离的变化')%二维仿真图的名称
xlabel('y_d');%二维仿真图的横坐标
ylabel('接收点处的总场强E_dB');%二维仿真图的纵坐标 展开
load('basic_var.mat')%把巷道的尺寸信息导入
% run tunnel_model;
%load('S_D.mat')%把收发点位置导入(收发点位置固定时将其导入)
sum1=0;
E1=[0,0,0];%设初始场强累加之前的值为0
x_s=1.5;y_s=0;z_s=3;y_d=0:1:140;
x_d=3;z_d=1.5;
for y_d=0:1:140
for f=[1,3,5,6]
[x_m,y_m,z_m] = mirror_point(x_s,y_s,z_s,f);%利用循环和子函数求出发射点关于所有平面的一级镜像点
[x_r,y_r,z_r,P] = validity_judgement(x_m,y_m,z_m,x_d,y_d,z_d,f); %判断所求镜像点的有效性
if P==1
[T]=block_test(x_r,y_r,z_r,x_d,y_d,z_d);%对路径之间的连线进行遮挡测试
if T==1
[T]=block_test(x_s,y_s,z_s,x_r,y_r,z_r);
if T==1
F=1;sum1=sum1+1;
% plot3([x_s x_r],[y_s y_r],[z_s z_r]);hold on;%画出有效反射路径
% plot3([x_r x_d],[y_r y_d],[z_r z_d]);hold on;
%计算接收点的场强
R=[x_r,y_r,z_r];
p11=sqrt((x_r-x_s)^2+(y_r-y_s)^2+(z_r-z_s)^2);%%%%计算发射点到反射点的路径长度
p12=sqrt((x_d-x_r)^2+(y_d-y_r)^2+(z_d-z_r)^2);%%%%计算反射点到接收点的路径长度
[e1u_i,e1h_i,e1u_r,e1h_r,R1_h,R1_u] = field_intensity(x_s,y_s,z_s,x_r,y_r,z_r,f);
[E1_i] = count_E1_i(x_s,y_s,z_s,x_r,y_r,z_r,f);%计算初始入射波的电场矢量
E1_p=R1_h*(dot(E1_i,e1h_i)*(p11/(p11+p12)))*e1h_r+R1_u*(dot(E1_i,e1u_i)*(p11/(p11+p12)))*e1u_r;
E1=E1+E1_p;%计算sum1条一次反射线的总场强
else
F=0;
end
else F=0;
end
else F=0;
end
end
E_dB=20*log10(sqrt(dot(E1,E1)));
end
plot(y_d,E_dB)%画出接收点场强随收发天线距离的变化
title('接收点处总场强随收发距离的变化')%二维仿真图的名称
xlabel('y_d');%二维仿真图的横坐标
ylabel('接收点处的总场强E_dB');%二维仿真图的纵坐标 展开
1个回答
展开全部
用matlab中计算出来的结果是NaN+NANi,绘制图形时其图窗就是一张犹如白纸(即没有图形),这是因为NaN是不存在的数(如0/0)。所以题主在计算mirror_point(x_s,y_s,z_s,f)时,应调整计算初值,即不用0作为初值,可以用eps来作为初值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
东莞大凡
2024-08-07 广告
2024-08-07 广告
作为东莞市大凡光学科技有限公司的一员,我们深知Matlab圆点标定板在相机标定中的重要性。该标定板通过均匀分布的圆点,帮助精确计算相机参数,优化成像效果。Matlab强大的编程功能,使得我们能够灵活设计标定板,调整圆点大小、数量和分布,以满...
点击进入详情页
本回答由东莞大凡提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询