Skip to main content
. 2022 Aug 17;22(16):6148. doi: 10.3390/s22166148
Algorithm 1: PGM for shared features cn.
  • 1:

    Initialize:

  • 2:

         Pi, ρi, Σc, μi, J, N, MAXLOOP, Ai, ρinew2, Σcnew

  • 3:

    for i=1…Jdo

  • 4:

        for n=1…N do

  • 5:

            μi←μi+bi,n

  • 6:

        end for

  • 7:

        μi←1Nμi

  • 8:

    end for

  • 9:

    l←1

  • 10:

    while MAXLOOP≥ldo            // EM algorithm for updating parameters

  • 11:

        Varc|b[c]←Σc−Σc⊤P⊤(PΣcP⊤+Ψ)−1PΣc       // Start expectation step

  • 12:

        for n=1…N do

  • 13:

            Ec|b[cn]←(PΣc)⊤(PΣcP⊤+Ψ)−1(bn−μ)

  • 14:

            Ec|b[cncn⊤]←Varc|b[c]+Ec|b[cn]Ec|b[cn]⊤

  • 15:

        end for                              // End expectation step

  • 16:

        for i=1…J do                      // Start maximization step

  • 17:

            for n=1…N do

  • 18:

               Ai←Ai+(bi,n−μi)Ec|b[cn]⊤

  • 19:

            end for

  • 20:

            Ai←12Ai

  • 21:

            Pinew←Ai(Ai⊤Ai)−1/2

  • 22:

            for n=1…N do

  • 23:

               ρinew2←ρinew2+||bi,n−μi||2−2(bi,n−μi)⊤PinewEc|b[cn]+tr(Ec|b[cncn⊤])

  • 24:

            end for

  • 25:

            ρinew2←1Ndiρinew2

  • 26:

        end for

  • 27:

        for n=1…N do

  • 28:

            Σcnew←Σcnew+Ec|b[cncn⊤]

  • 29:

        end for

  • 30:

        Σcnew←1NΣcnew

  • 31:

        Pi, ρi2, Σc←Pinew, ρinew2, Σcnew                // End maximization step

  • 32:

        Initialize:

  • 33:

             Ai, ρinew2, Σcnew

  • 34:

        l←l+1

  • 35:

    end while