在 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]);
给出:
我有一个简单的 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]);
给出: