R: Joint Diagonalization of Complex Matrices

cjd {JADE} | R Documentation

## Joint Diagonalization of Complex Matrices

### Description

This is an R version of Cardoso's joint_diag matlab function for joint diagonalization of k complex-valued square matrices.

### Usage

    cjd(X, eps = 1e-06, maxiter = 100)

### Arguments

`X` | A matrix of k stacked pxp complex matrices with dimension c(kp,p) or an array with dimension c(p,p,k).
`eps` | Convergence tolerance.
`maxiter` | Maximum number of iterations.

### Value

`V` | An orthogonal matrix.
`D` | A stacked matrix with the diagonal matrices or an array with the diagonal matrices. The form of the output depends on the form of the input.

### Author(s)

Jean-Francois Cardoso. Ported to R by Klaus Nordhausen.

### References

Cardoso, J.-F. and Souloumiac, A., (1996), Jacobi angles for simultaneous diagonalization, SIAM J. Mat. Anal. Appl., 17, 161–164.

### See Also

`rjd`, `rjd.fortran`

### Examples

    D1 <- diag(complex(real=runif(3,0,2), imaginary=runif(3)))
    D2 <- diag(complex(real=runif(3,0,2), imaginary=runif(3)))
    D3 <- diag(complex(real=runif(3,0,2), imaginary=runif(3)))
    D4 <- diag(complex(real=runif(3,0,2), imaginary=runif(3)))

    Z <- matrix(runif(9), ncol = 3)
    V <- eigen(Z %*% t(Z))$vectors

    M1 <- t(V)%*%D1%*%V
    M2 <- t(V)%*%D2%*%V
    M3 <- t(V)%*%D3%*%V
    M4 <- t(V)%*%D4%*%V
    MS <- rbind(M1,M2,M3,M4)
    Ms <- array(0,dim=c(3,3,4))
    Ms[,,1]<-M1
    Ms[,,3]<-M3
    Ms[,,2]<-M2
    Ms[,,4]<-M4
    res.array <- cjd(Ms)
    res.mat <- cjd(MS)
    Re(res.array$V)
    V
    round(V%*%Re(res.array$V),2)
    round(V%*%Re(res.mat$V),2)

[Package JADE version 2.0-0 Index]