在gnuplot中创建麦克风极坐标图

时间:2013-09-26 13:37:19

标签: gnuplot

我想创建一个麦克风极点模式图,其范围为-20(在中间),以+5为步长5。我找到了类似的代码,但没有任何内容允许比例为负 然后需要将多个模式添加到覆盖几个不同频率的图中,我有度值(0-360)和相应的dB值(-25 - +5)。

这是情节应该是什么样子(虽然尺度略有不同):

polar_pattern_plot

我找到的最接近的gnuplot是:How to get a radial(polar) plot using gnu plot?

也许这可以根据我的需要进行修改?

我还希望在情节的顶部而不是在右边找到0度。

我是使用gnuplot的新手,所以我对它的代码并不是特别熟悉,因此我很难修改代码并取得很大的成功(到目前为止)。

2 个答案:

答案 0 :(得分:1)

所以你想绘制一个极性函数,例如: r(theta) = 1 + sin(theta)

绘制函数非常简单,只需执行

set polar
plot 1+sin(t)

可以使用

绘制简单的极坐标网格
set grid polar

但是raxisrtics的位置与您想要的位置不同。指定自定义标签没有问题。但不支持角度标签,因此您需要手动设置它们。并且必须取消边框和其他轴和抽动。

要获得与您显示的完全相同的图像,请使用以下脚本:

set terminal pngcairo size 700,600 font ',10'
set output 'cardioid.png'

set angle degree
set polar
set size ratio 1
set tmargin 3
set bmargin 3

set style line 11 lc rgb 'gray80' lt -1
set grid polar ls 11

unset border
unset xtics
unset ytics

r=1
set rrange [0:r]
set rtics 0.166 format '' scale 0
set label '0°' center at first 0, first r*1.05
set label '180°' center at first 0, first -r*1.05
set label '90°' right at first -r*1.05, 0
set label '270°' left at first r*1.05, 0

set for [i=1:5] label at first r*0.02, first r*((i/6.0) + 0.03) sprintf("%d dB", -30+(i*5))
unset raxis

plot 0.5*(1+sin(t)) linewidth 2 t ''

结果:

enter image description here

包括标签的一些偏移,这取决于终端,画布大小和字体大小。所以你可能需要调整它们。

我必须稍微增加顶部和底部边距(此处为3个字符的高度),以便为角度标签留出足够的空间。它们不包括在自动边距计算中,因为它不属于轴。

答案 1 :(得分:1)

不幸的是,克里斯托夫的回答是错误的。

如果您检查绘图曲线穿过5db圆圈的位置,则可以看到。

应该绘制的是

20*log10(A+B*cos(t)) 

其中A+B = 1A - B确定(名义)方向性模式。

第一张图似乎适用于A=B=0.5,这是一种心形图案。