在MATLAB中使用极坐标图函数有一些奇怪的地方

时间:2018-11-19 22:56:12

标签: matlab plot polar-coordinates

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

获得的数字是这样的: plot resulting from code

1 个答案:

答案 0 :(得分:4)

当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]);

赠予:

enter image description here