Problema definiendo una función
Publicado por Aitor (49 intervenciones) el 15/05/2017 13:02:11
Hola amigos,
Estoy teniendo problemas para implementar la función de la siguiente imagen:

Para calcular la función inversa de rho, he utilizado una aproximación numérica para la segunda igualdad de la función definida a trozos, ya que no tenía solución analítica.
Tengo la impresión de que algo está mal hecho, porque el resultado debería ser más positivo con cada iteración.
Dejo aquí mi código:
Si alguien tiene alguna duda, estaré encantado de responderla...
¡Muchas gracias de antemano y que tengáis todos una feliz semana!
Estoy teniendo problemas para implementar la función de la siguiente imagen:

Para calcular la función inversa de rho, he utilizado una aproximación numérica para la segunda igualdad de la función definida a trozos, ya que no tenía solución analítica.
Tengo la impresión de que algo está mal hecho, porque el resultado debería ser más positivo con cada iteración.
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
39
40
41
42
43
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));
mu = zeros(1,iterations+1);
for k=2:1:iterations+1
for i = 1:length(l_idle)
if ((mu0 + (i-1)*mu(k-1)) < 10)
l_idle(i) = subs(Q_1,x,(mu0 + (i-1)*mu(k-1)));
else
l_idle(i) = subs(Q_2,x,(mu0 + (i-1)*mu(k-1)));
end
end
lambda = l*transpose(l_idle);
for j = 1:length(r_idle)
b = 1-(1-lambda)^(j-1);
g = subs(Q_1,x,b);
if or(subs(Q_1,x,10) < g, subs(Q_1,x,0) >= g)
r_idle(j) = (1/0.4527*(0.0218-log(g)))^(1/0.86);
else
xx = linspace(0, subs(Q_2,x,10), 10000);
yy = f(xx);
r_idle(j) = interp1(yy,xx,b);
end
end
mu(k) = r*transpose(r_idle);
end
Si alguien tiene alguna duda, estaré encantado de responderla...
¡Muchas gracias de antemano y que tengáis todos una feliz semana!
Valora esta pregunta


0