Implementación de esta función matemática en Matlab
Publicado por Aitor (49 intervenciones) el 11/06/2017 15:00:56
Estoy teniendo algunos problemas para implementar la siguiente función:

Para expresar la función inversa de phi(x) he calculado por mi cuenta en papel el caso correspondiente al primer trozo de la función.
Estoy teniendo que hacer algo mal, ya que el resultado debería ir siendo cada vez ''más positivo'' (mayor que cero) con cada iteración.
Os dejo aquí mi código:
Mi problema es que la variable `r_idle(1)` es igual a `-Inf` cuando `b=0` dado `j=1`.
¿Sabéis cómo podría solucionar esto?
Muchas gracias de antemano, y que tengáis un buen día.

Para expresar la función inversa de phi(x) he calculado por mi cuenta en papel el caso correspondiente al primer trozo de la función.
Estoy teniendo que hacer algo mal, ya que el resultado debería ir siendo cada vez ''más positivo'' (mayor que cero) con cada iteración.
Os dejo aquí mi código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
l = [0 0.3078 0.27287 0 0 0 0.41933];
r = [0 0 0 0 0 0.4 0.6];
sigma = 0.8747;
mu0 = 2/sigma;
iterations = 50;
% Density evolution algorithm depiction for finding the treshold of irregular LDPC codes
syms x;
l_idle = zeros(1,length(l));
r_idle = zeros(1,length(r));
Q_1 = exp(-0.4527*x^0.86 + 0.0218);
Q_2 = sqrt(pi/x)*exp((-x/4)*(1-20/(7*x)));
mv = zeros(1,iterations+1);
for k=2:length(mv)
for i = 1:length(l_idle)
if ((mu0 + (i-1)*mv(k-1)) < 10)
l_idle(i) = double(subs(Q_1,x,(mu0 + (i-1)*mv(k-1))));
else
l_idle(i) = double(subs(Q_2,x,(mu0 + (i-1)*mv(k-1))));
end
end
lambda = l*transpose(l_idle);
for j = 1:length(r_idle)
b = 1-(1-lambda)^(j-1);
if b < 10, r_idle(j) = subs(((log(x)-0.0218)/-0.4527)^(1/0.86),x,b);
else, r_idle(j) = subs(finverse(Q_2,x),x,b);
end
end
mv(k) = r*transpose(r_idle);
end
Mi problema es que la variable `r_idle(1)` es igual a `-Inf` cuando `b=0` dado `j=1`.
¿Sabéis cómo podría solucionar esto?
Muchas gracias de antemano, y que tengáis un buen día.
Valora esta pregunta


0