我想得到一个这样的情节
在Gnuplot中生成,但是从文件中绘制。
包含所有功能的Gnuplot脚本如下:
set encoding iso_8859_1
set key right top font "Helvetica,17"
set ylabel "Received power, P_t (dBm)" font "Helvetica,18"
set xlabel "Separation distance, r (m)" font "Helvetica,18"
set xtics font "Helvetica,16"
set ytics font "Helvetica,16"
set size 1, 1.2
set terminal postscript color eps enhanced
set grid xtics ytics
set key spacing 1.5
set key box linestyle 1 width 3
set logscale x
set grid xtics mxtics
set output "link-up-test.eps"
h1=1.85
h2=0.5
r(x) = sqrt((h1 - h2)**2 + x**2 )
lmb = 300/865.7
H(x) = sqrt( 1- (4*h1*h2)/(x**2 + (h1 + h2)**2 ) )
theta(x) = 2*pi/lmb*( sqrt((h1 + h2)**2+x**2 ) - sqrt((h1 - h2)**2+ x**2) )
q_e(x) = H(x)**2*(sin(theta(x)))**2 + (1 - H(x)*cos(theta(x)))**2
P_x_G = 4
sigma = 1.94
invsqrt2pi = 0.398942280401433
normal(x,mu,sigma)=sigma<=0?1/0:invsqrt2pi/sigma*exp(-0.5*((x-mu)/sigma)**2)
rnd(x) = 10**(-normal(x,0,sigma)/10)
pot_t(x) = 10*log10( 1000*(P_x_G*1.622*((300/lmb)**2) *0.5*1) / (((4*pi*r(x))**2) *1.2*1)*q_e(x)*rnd(x) )
plot [1:12][] pot_t(x) t "up" w lines ls 1
使用此脚本,我得到以下情节
具有相似的形式,但它没有函数rnd(x)
的随机性,并且在y轴上没有相同的级别。
我遗失了一些东西,但我多次检查了几次这些功能。我想知道为什么不是同一个数字。
此致
答案 0 :(得分:2)
我想解决这个问题。 我使用Box-Muller方法生成高斯样本。
h1=1.85
h2=0.5
r(x) = sqrt((h1 - h2)**2 + x**2 )
lmb = 300/865.7
H(x) = sqrt( 1- (4*h1*h2)/(x**2 + (h1 + h2)**2 ) )
theta(x) = 2*pi/lmb*( sqrt((h1 + h2)**2+x**2 ) - sqrt((h1 - h2)**2 + x**2) )
q_e(x) = H(x)**2*(sin(theta(x)))**2 + (1 - H(x)*cos(theta(x)))**2
P_G = 4
sigma = 1.94
normal(x,mu,sigma) = sqrt(-2.0 * log(rand(0))) * cos(2*pi * rand(0)) * sigma + mu
rnd(x) = 10**(-normal(x,0,sigma)/10)
pot_t(x) = 10*log10( 1000*(P_G*1.622*((lmb)**2) *0.5*1) / (((4*pi*r(x))**2) *1.2*1)*q_e(x)*rnd(x) )
set samples 1000
plot [1:12][] pot_t(x) t "up" w lines ls 1
创建此图:
使用函数normal(x, mu, sigma)
生成样本。
这个解决方案只有一个问题
当我使用set logscale x
进行绘图时,当x-axis
更集中时,点的绘图应该更密集(参见上面的第一个图),但似乎Gnuplot首先生成x-axis
的对数刻度之后,将图中的等距样本作为线性标度处理对数标度。如果有人能回答这个问题或改进解决方案,我将不胜感激。
此致
答案 1 :(得分:1)
你的rnd(x)函数没有任何随机性。只需绘制rnd(x)就可以看到了。为什么不将gnuplot的rand()函数与正态分布结合使用?