uwedge {coroICA} | R Documentation |

## uwedge

### Description

Performs an approximate joint matrix diagonalization on a list of matrices. More precisely, for a list of matrices Rx the algorithm finds a matrix V such that for all i V Rx[i] t(V) is approximately diagonal.

### Usage

```
uwedge(Rx, init = NA, Rx0 = NA, return_diag = FALSE, tol = 1e-10,
max_iter = 1000, n_components = NA, minimize_loss = FALSE,
condition_threshold = NA, silent = TRUE)
```

### Arguments

`Rx` |
list of matrices to be diagaonlized. |

`init` |
matrix used in first step of initialization. If NA a default based on PCA is used |

`Rx0` |
matrix used for initial scaling. |

`return_diag` |
boolean. Specifies whether to return the list of diagonalized matrices. |

`tol` |
float, optional. Tolerance for terminating the iteration. |

`max_iter` |
int, optional. Maximum number of iterations. |

`n_components` |
number of components to extract. If NA is passed, all components are used. |

`minimize_loss` |
boolean whether to compute loss function in each iteration step and output V with smallest loss over all iterations. Defaults to FALSE since it is computationally more expensive. |

`condition_threshold` |
float, optional. Stops iteration if condition number of V passes this threshold. Default NA, means no threshold is used. |

`silent` |
boolean whether to supress status outputs. |

### Details

For further details see the references.

### Value

object of class 'uwedge' consisting of the following elements

`V` |
joint diagonalizing matrix. |

`Rxdiag` |
list of diagonalized matrices. |

`converged` |
boolean specifying whether the algorithm
converged for the given |

`iterations` |
number of iterations of the approximate joint diagonalisation. |

`meanoffdiag` |
mean absolute value of the off-diagonal values of the to be jointly diagonalised matrices, i.e., a proxy of the approximate joint diagonalisation objective function. |

### Author(s)

Niklas Pfister and Sebastian Weichwald

### References

Pfister, N., S. Weichwald, P. Bühlmann and B. Schölkopf (2018). Robustifying Independent Component Analysis by Adjusting for Group-Wise Stationary Noise ArXiv e-prints (arXiv:1806.01094).

Tichavsky, P. and Yeredor, A. (2009). Fast Approximate Joint Diagonalization Incorporating Weight Matrices. IEEE Transactions on Signal Processing.

### See Also

The function `coroICA`

uses `uwedge`

.

### Examples

```
## Example
set.seed(1)
# Generate data 20 matrix that can be jointly diagonalized
d <- 10
A <- matrix(rnorm(d*d), d, d)
A <- A%*%t(A)
Rx <- lapply(1:20, function(x) A %*% diag(rnorm(d)) %*% t(A))
# Perform approximate joint diagonalization
ptm <- proc.time()
res <- uwedge(Rx,
return_diag=TRUE,
max_iter=1000)
print(proc.time()-ptm)
# Average value of offdiagonal elements:
print(res$meanoffdiag)
```

*coroICA*version 1.0.2 Index]