eigtrack ¤
Eigenvalue continuity tracking (port of intercheig3.m).
Greedy algorithm that permutes new eigenpairs to match the channel ordering of the previous frequency step, enabling smooth per-channel eigenvalue curves across a frequency sweep.
Functions:
| Name | Description |
|---|---|
track_eigenvalues | Permute new eigenpairs to best match the old channel ordering. |
track_eigenvalues_all | Track eigenvalue channels across all frequency points in one JIT call. |
track_eigenvalues ¤
track_eigenvalues(
vals_new: ndarray, vecs_new: ndarray, vecs_old: ndarray
) -> tuple[ndarray, ndarray]
Permute new eigenpairs to best match the old channel ordering.
For each new eigenvector, finds the old eigenvector with the largest dot-product overlap. Assignments are made greedily in descending order of confidence (highest max-overlap first) so the most certain matches are locked in before ambiguous ones are resolved.
Port of intercheig3.m from the SINTEF MFT-NNLS toolbox. Uses jax.lax.scan so the function is JIT-compilable.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
vals_new | ndarray |
| required |
vecs_new | ndarray |
| required |
vecs_old | ndarray |
| required |
Returns:
| Name | Type | Description |
|---|---|---|
vals_tracked | ndarray |
|
vecs_tracked | ndarray |
|
Source code in circulax/fitting/passivity/eigtrack.py
track_eigenvalues_all ¤
Track eigenvalue channels across all frequency points in one JIT call.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
all_vals | ndarray |
| required |
all_vecs | ndarray |
| required |
Returns:
| Name | Type | Description |
|---|---|---|
vals_tracked | ndarray |
|
vecs_tracked | ndarray |
|