簡體   English   中英

高斯近似 - 如何在Matlab中實現這個數學函數

[英]Gaussian Approximation - How to implement this math function in Matlab

我在嘗試實現以下數學函數時遇到了一些麻煩:

在此輸入圖像描述

我自己直接計算了phi(x)的反函數,用於分段定義函數的第一個相等性。

我的印象是必須做錯事情,因為每次迭代結果應該更加“正面”(大於0)。

我確信這是我應該使用的確切公式,所以請你如此友好地給我任何關於如何解決這個問題的反饋?

非常感謝提前和BR。

畢竟解決方案非常簡單。 瀏覽了許多提到這種算法的論文,我注意到兩個和的索引都不是從'j / i = 1'開始,而是從'j / i = 2'開始,因此指數不再由0。

 l = [0 0.3078 0.27287 0 0 0 0.41933];
 r = [0 0 0 0 0 0.4 0.6];

 sigma = 9.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 = 2: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(2:length(l))*transpose(l_idle(2:length(l_idle)));    

    for j = 2:length(r_idle)
        b = 1-(1-lambda)^(j-1);
        if b < 10, r_idle(j) = subs(0.4527^(-1/0.86)*(0.0218-log(x))^(1/0.86),x,b);
        else,      r_idle(j) = subs(finverse(Q_2,x),x,b);
        end       
    end
    mv(k) = r(2:length(r))*transpose(r_idle(2:length(r_idle)));
end

非常感謝您的支持,祝您周末愉快!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM