логарифмическая ось Y в Matlab

Я написал следующий код в MuPAD. И теперь я попытался построить график «Pb против сигм» в Matlab, используя команду «semilogy». Но моя ось 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]

Ожидаемый и фактический результат:

введите здесь описание изображения


person tushar    schedule 03.12.2017    source источник
comment
@yaac... я добавил изображение. Первое изображение - ожидаемое, а второе - то, что я получил (фактическое).   -  person tushar    schedule 04.12.2017
comment
В каком диапазоне вы хотите отображать ось Y? Ваши значения находятся в (0,33, 0,49), что не очень хорошо подходит для логарифмической шкалы, поскольку все значения находятся в пределах одной величины.   -  person yacc    schedule 04.12.2017
comment
@yaac .... я хочу диапазон, указанный на первом изображении. Значения (0,33, 0,49....), которые я получил после запуска кода в MuPaD.   -  person tushar    schedule 04.12.2017
comment
вам нужно установить пределы диапазона, я думаю: stackoverflow.com/questions/21529467/   -  person yacc    schedule 04.12.2017
comment
@yaac ...... я пробовал, но не работает.   -  person tushar    schedule 05.12.2017


Ответы (1)


На самом деле, без преобразования ваших переменных в логарифмическую шкалу перед их построением или использованием графика semilogy вы можете добиться желаемого результата, используя следующую команду:

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

после создания графика (традиционный график, созданный с помощью функции plot).

person Tommaso Belluzzo    schedule 03.12.2017
comment
@tommaso.... спасибо за ответ. Я уже пробовал, но он не работает. - person tushar; 03.12.2017
comment
Кстати, вы уверены, что не используете функцию exp в векторе y где-то перед ее построением? - person Tommaso Belluzzo; 03.12.2017
comment
@tommaso..... я не использую функцию exp. Мой pb означает вероятность битовой ошибки. - person tushar; 03.12.2017