在 MATLAB 中使用极坐标图函数有些奇怪

Something strange using polar plot function in MATLAB

我有一个简单的 theta 函数,我想使用 MATLAB 中的 polarplot 函数以 dB 为单位绘制此函数。但是当我制作从 -40 到 0 的图表时,图表似乎在水平轴周围有一个奇怪的部分。我的 MATLAB 代码 (R2016a) 是:

%% Define range of plotting angle.
ceta= [10^-9:0.0001:2*pi];
% ceta starts not from pure zero to avoid 0/0 in some cases.

E =  abs( ( cos((cos(ceta))*pi/2) ) ./ ( sin(ceta) ) ); 

power_dB = 10.*log10(E.^2); 
power_dB = power_dB - max(power_dB);
max(power_dB)
polarplot(ceta,power_dB);
rlim([-40 0]); 

得到的图是这样的:

当 ceta = 0、pi 或 2pi 时,您的 E 值非常接近 0。当您取 E 的对数时,这会导致非常大的值。

当E很低的时候,你可以去掉ceta和E的分数。请参阅下面的代码块。

E =  abs( (  cos((cos(ceta))*pi/2) ) ./ ( sin(ceta) ) ); 
ceta(E<1e-2) = [];
E(E<1e-2) = []; 
power_dB = 10.*log10(E.^2); 
power_dB = power_dB - max(power_dB);
max(power_dB)
polarplot(ceta,power_dB);
rlim([-40 0]);

给出: