2

我正在尝试绘制菲涅耳椭圆和两点(x1,y1)和(x2,y2)之间的线。此外,我正在尝试使用 atan2 旋转椭圆。首先,我不明白为什么绘制的红色轴与椭圆的想象主轴不同。它们具有不同的角度和长度。其次,我不确定我是否使用正确的公式来绘制带旋转的椭圆。

f=217.25;
Ht=45;
Hr=2.5;

figure (10);
x1=0;
x2=2.415512976422468e+04;
y1=2.609242854399548e+02+Ht;% Ht is trasmitter antenna height
y2=40.819199999995895+Hr;% Hr is receiver antenna height

% plot line of sight (major axis of ellipse)
hold on,plot([x1 x2],[y1 y2],'r')

% Plot 1st Fresnel zone - ELLIPSE
fr=f*1e6;% f in Hz
c=2.997925e8;% speed of light in m/s
lambda=c/fr; % wavelength in meters
a = 1/2*sqrt((x2-x1)^2+(y2-y1)^2); %majoraxis/2
r = sqrt(lambda*a/2);% b=r %secondaxis/2

t = linspace(0,2*pi,300);
X = a*cos(t);
Y = r*sin(t); 
w = atan2(y2-y1,x2-x1); %angle of two points
x = (x1+x2)/2 + X*cos(w) - Y*sin(w);
y = (y1+y2)/2 + X*sin(w) + Y*cos(w);
hold on, plot(x,y,'-k')
grid on

菲涅耳椭圆

4

2 回答 2

0

我同意@Y。Chang,我认为代码以 r 的变化为模是正确的,为了完整起见,请注意,如果您调用,此问题将消失

axis equal

所以我想这与matlab绘图有关,但我不明白为什么。感谢您发现这个问题!

于 2017-06-22T14:42:11.593 回答
0

在您的代码中使用旋转制作椭圆时,我没有看到任何问题。我很惊讶红线似乎与主轴不匹配。

如果您绘制椭圆沿其主轴不旋转,然后旋转,它看起来与您的图片完全相同。

X = a*cos(t);
X = [X -a];
Y = r*sin(t); 
Y = [Y 0];
x = xmid + X*cos(w) - Y*sin(w);
y = ymid + X*sin(w) + Y*cos(w);

所以我认为这可能是由于Matlab 图形中的平滑导致的锯齿或其他伪影。我也无法理解。我知道我的回答可能不是最好的,但你会从我那里得到关于这个有趣现象的确认。我在 Matlab 2017a 中运行。

顺便说一句,我在您的代码中发现的唯一问题不是椭圆绘图。我相信这条线

r = sqrt(lambda*a/2);% b=r %secondaxis/2

应该

r = sqrt(lambda*a)/2;% b=r %secondaxis/2
于 2017-06-16T00:43:44.617 回答