Index-> contents reference index search external Previous Next Up-> ckbs utility ckbs_blkdiag_mul ckbs-> license ckbs_t_general ckbs_nonlinear ckbs_L1_nonlinear ckbs_affine ckbs_affine_singular ckbs_L1_affine utility all_ok.m whatsnew wishlist bib utility-> ckbs_t_obj ckbs_t_grad ckbs_t_hess ckbs_diag_solve ckbs_bidiag_solve ckbs_bidiag_solve_t ckbs_blkbidiag_symm_mul ckbs_blkdiag_mul ckbs_blkdiag_mul_t ckbs_blkbidiag_mul_t ckbs_blkbidiag_mul ckbs_blktridiag_mul ckbs_sumsq_obj ckbs_L2L1_obj ckbs_sumsq_grad ckbs_process_grad ckbs_sumsq_hes ckbs_process_hes ckbs_tridiag_solve ckbs_tridiag_solve_b ckbs_tridiag_solve_pcg ckbs_newton_step ckbs_newton_step_L1 ckbs_kuhn_tucker ckbs_kuhn_tucker_L1 ckbs_blkdiag_mul-> blkdiag_mul_ok.m Headings-> Syntax Purpose Bdia B V W Example

Packed Block Diagonal Matrix Times a Vector or Matrix

Syntax
[w] = ckbs_blkdiag_mul(Bdia, v)

Purpose
This routine enables one to used the packed form of a block diagonal matrix and returns the matrix times a vector or matrix; i.e.,   $W = B * V$ 

Bdia
The argument Bdia is an   m \times n \times N array. For   k = 1 , \ldots , N we define   B_k \in \B{R}^{m \times n} by   $B_k = Bdia(:, :, k)$ 

B
The matrix   B is defined by   $B = \left( \begin{array}{cccc} B_1 & 0 & 0 & \\ 0 & B_2 & 0 & 0 \\ 0 & 0 & \ddots & 0 \\ & 0 & 0 & B_N \end{array} \right)$ 

V
The argument V is a matrix of size   n * N \times p , with no restrictions on   p .

W
The result W is a matrix of size   m * N \times p .

Example
The file blkdiag_mul_ok.m contains an example and test of ckbs_blkdiag_mul. It returns true if ckbs_blkdiag_mul passes the test and false otherwise.
Input File: src/ckbs_blkdiag_mul.m