【问题标题】:Something strange using polar plot function in MATLAB在 MATLAB 中使用极坐标图函数有些奇怪
【发布时间】:2018-11-19 22:56:12
【问题描述】:

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

得到的图是这样的:

【问题讨论】:

    标签: matlab plot polar-coordinates


    【解决方案1】:

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

    给:

    【讨论】:

    • 我有一个问题,当 10*log10(E.^2) 趋于大值时,我认为 rlim([ -40 0]) 应该删除它,为什么没有发生呢?
    • rlim 仅控制图形轴。发生的情况是,当您绘制大于 -40(以幅度计)的值时,它会穿过原点并继续到绘图的边缘。试试这个,删除我建议的行并在你的极坐标图之前添加 power_dB(power_dB
    • 另外,第二次看这个更好的解决方案可能是只使用 power_dB(power_dB
    • E = abs(cos(cos(ceta)*pi/2) ./ sin(ceta)); 就足够了,减少了 LISP 样式中括号的使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    相关资源
    最近更新 更多