Source code for cr.sparse._src.pursuit.util
# Copyright 2021 CR-Suite Development Team
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import jax.numpy as jnp
from cr.nimble import solve_Lx_b, solve_LTx_b, solve_Ux_b, solve_UTx_b
[docs]def abs_max_idx(h):
"""Returns the index of entry with highest magnitude
"""
return jnp.argmax(jnp.abs(h))
def largest_indices(h, K):
indices = jnp.argsort(jnp.abs(h))
return indices[:-K-1:-1]
[docs]def gram_chol_update(L, v):
r"""Incrementally updates the Cholesky factorization :math:`G = L L^T` where :math:`G = \Phi^T \Phi`
"""
m, n = L.shape
z = jnp.zeros((m, 1))
w = solve_Lx_b(L, v)
s = jnp.sqrt(1 - w.T @ w)
L0 = jnp.hstack((L, z))
L1 = jnp.hstack((w.T, s))
L = jnp.vstack((L0, L1))
return L