【问题标题】:making y axis logarithmic in Matlab在Matlab中使y轴对数
【发布时间】:2017-12-03 16:55:39
【问题描述】:

我在 MuPAD 中编写了以下代码。现在我尝试使用“semilogy”命令在 Matlab 中绘制“Pb 与 sigmas”。但是我的 Y 轴还是线性的,没有变成对数刻度。

非常感谢任何有关解决此问题的建议。

N:= 2;
d:= 1*10^3;
a:= 5*10^-2;
ap:= 8.1;
be:= 4;
b0:= 0.25;
rhom:= 0.1;
g:= 2*b0*(1-rhom);
ohm:= 0.5;
f:= ohm + 2*(b0)*rhom;
A:= ((2*(ap)^(ap/2))/((g^(1+(ap/2)))*gamma(ap)))*(((g*be)/(g*be+f))^(be+(ap/2)));

a_k:= (binomial(be-1,k-1)/gamma(k))*((g*be+f)^(1-(k/2)))*((f/g)^(k-1))*(ap/be)^(k/2);
ad:= 0.6;
v:= (sqrt(PI)*a)/(sqrt(2)*ad);
ae:= float(sqrt((ad^2*sqrt(PI)*erf(v))/(2*v*exp(-v^2))));
//sigmas:= 0.05;
z:= ae/(2*sigmas);
x:= (z^2/(1+z^2));
//pt:= 140*10^-3;
//R:= 0.5;
//sigman:= 10^-7;
//Ao:= erf^2(v);
//U_i := ((pt^2*R^2)/(2*sigman^2))*Ao^2*x^2*(g+f)^2;
Y:= (ap^2*be^2*x^2*(g+f)^2)/(16*100*((g*be)+f)^2);
pb:= (1/2)*sum(((z^2*A*a_k*(2^(ap+k-4)))/PI)*(((ap*be)/(g*be+f))^(-((ap+k)/2)))*meijerG(5,1,[1,(2+z^2)/2],[(z^2)/2,ap/2,(1+ap)/2,k/2,(1+k)/2],Y),k=1..be);
S2:= hfarray(1..5,[pb $ sigmas=1..5]);

我的pb 值是:

[0.3340089062, 0.4380877868, 0.4676408486, 0.4799658727, 0.4862966796]

预期与实际结果:

【问题讨论】:

  • @yaac... 我已经添加了图片。第一张图片是预期的一张,第二张图片是我得到的一张(实际)。
  • 您希望 y 轴显示的范围是多少?您的值在 (0.33, 0.49) 中,不太适合对数刻度,因为所有值都在相同的幅度内。
  • @yaac.... 我想要第一张图片中给出的范围。在 MuPaD 中运行代码后得到的值 (0.33, 0.49....)。
  • 你需要设置我认为的范围限制:stackoverflow.com/questions/21529467/…
  • @yaac......我试过了,但它不起作用。

标签: matlab mupad


【解决方案1】:

实际上,在绘制变量或使用semilogy 绘图之前,无需将变量转换为对数刻度,您可以使用以下命令获得所需的结果:

set(gca,'YScale','log');

一旦创建了绘图(通过plot 函数创建的传统绘图)。

【讨论】:

  • @tommaso....谢谢您的回复。我已经试过了,但它不起作用。
  • 附带说明...您确定在绘制之前没有在y 向量上使用exp 函数吗?
  • @tommaso .....我没有使用“exp”函数。我的“pb”表示误码概率。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多