|
RcdMathLib_doc
Open Source Library for Linear and Non-linear Algebra
|
Go to the documentation of this file.
38 #define matrix_t double
54 #define M_PI 3.14159265358979323846
141 uint8_t start_row_ind, uint8_t end_row_ind,
142 uint8_t start_col_ind, uint8_t end_col_ind,
143 uint8_t dest_row_num, uint8_t dest_col_num,
144 matrix_t dest_matrix[][dest_col_num]);
218 void matrix_mul(uint8_t a_line_num, uint8_t a_col_num,
219 matrix_t a_matrix[a_line_num][a_col_num],
220 uint8_t b_line_num, uint8_t b_col_num,
221 matrix_t b_matrix[b_line_num][b_col_num],
222 matrix_t dest_matrix[a_line_num][b_col_num]);
245 uint8_t b_col_num_max,
matrix_t b_matrix[][b_col_num_max],
246 uint8_t a_start_row_ind, uint8_t a_end_row_ind,
247 uint8_t a_start_col_ind, uint8_t a_end_col_ind,
248 uint8_t b_start_row_ind, uint8_t b_end_row_ind,
249 uint8_t b_start_col_ind, uint8_t b_end_col_ind,
250 uint8_t dest_col_size,
251 matrix_t dest_matrix[][dest_col_size]);
422 uint8_t col_num,
matrix_t col_vec[m]);
436 matrix_t matrix[max_m][max_n], uint8_t col_num,
452 matrix_t matrix[m][n], uint8_t col_num);
484 uint8_t row_num, uint8_t col_num);
520 uint8_t row_num, uint8_t col_num,
547 uint8_t j, uint8_t col_begin,
643 uint8_t start_row_ind, uint8_t end_row_ind,
644 uint8_t start_col_ind, uint8_t end_col_ind);
663 uint8_t before_dec, uint8_t after_dec);
687 uint8_t start_row_ind, uint8_t end_row_ind,
688 uint8_t start_col_ind, uint8_t end_col_ind,
689 uint8_t before_dot, uint8_t after_dot);
713 uint8_t begin_row, uint8_t begin_column,
714 matrix_t dst_arr[max_n - begin_row]);
void matrix_get_part_column_vec(uint8_t max_m, uint8_t max_n, matrix_t matrix[max_m][max_n], uint8_t col_num, uint8_t offset, matrix_t col_vec[max_m - offset])
Get a part of a column of a matrix.
void matrix_mul_vec(uint8_t m, uint8_t n, matrix_t matrix[m][n], matrix_t vec[n], matrix_t dst_arr[m])
Compute the multiplication of a matrix with a column vector.
void matrix_clear(uint8_t m, uint8_t n, matrix_t matrix[m][n])
Clear all the elements of the vector.
void matrix_swap_rows(uint8_t n, matrix_t matrix[][n], uint8_t i, uint8_t j)
Swaps two rows of a matrix.
uint8_t row_num
the row number
void matrix_sub(uint8_t m, uint8_t n, matrix_t A[m][n], matrix_t B[m][n], matrix_t A_minus_B[m][n])
Compute the subtraction of two matrices.
matrix_t matrix_get_abs_max_elem_in_column(uint8_t m, uint8_t n, matrix_t matrix[m][n], uint8_t col_num)
Get the maximum absolute value of a column vector in a matrix.
void matrix_write(uint8_t m, uint8_t n, matrix_t matrix[m][n], uint8_t i, uint8_t j, matrix_t val)
Write a value in a matrix at the position (i,j).
matrix_t matrix_get_max_elem_in_part_column(uint8_t max_m, uint8_t max_n, matrix_t matrix[max_m][max_n], uint8_t row_num, uint8_t col_num)
Get the largest element of a column vector in a sub-matrix.
void matrix_part_mul_scalar_vec_matr(uint8_t max_m, uint8_t max_n, matrix_t scalar, matrix_t vec[max_m], matrix_t matrix[max_m][max_n], uint8_t begin_row, uint8_t begin_column, matrix_t dst_arr[max_n - begin_row])
Compute the multiplication of a scalar with row vector and a sub-matrix.
void matrix_part_mul(uint8_t a_col_num_max, matrix_t a_matrix[][a_col_num_max], uint8_t b_col_num_max, matrix_t b_matrix[][b_col_num_max], uint8_t a_start_row_ind, uint8_t a_end_row_ind, uint8_t a_start_col_ind, uint8_t a_end_col_ind, uint8_t b_start_row_ind, uint8_t b_end_row_ind, uint8_t b_start_col_ind, uint8_t b_end_col_ind, uint8_t dest_col_size, matrix_t dest_matrix[][dest_col_size])
Compute the partial multiplication of two matrices.
void matrix_transpose(uint8_t m, uint8_t n, matrix_t src_matrix[m][n], matrix_t dest_matrix[n][m])
Computes the transpose of a matrix.
void matrix_add(uint8_t m, uint8_t n, matrix_t A[m][n], matrix_t B[m][n], matrix_t A_plus_B[m][n])
Compute the addition of two matrices.
void matrix_trans_mul_itself(uint8_t m, uint8_t n, matrix_t A[m][n], matrix_t AT_mul_A[n][n])
Compute the multiplication of the transpose of a matrix with itself.
void matrix_part_print(uint8_t m, uint8_t n, matrix_t matrix[m][n], uint8_t start_row_ind, uint8_t end_row_ind, uint8_t start_col_ind, uint8_t end_col_ind)
Display the values of the sub-matrix elements.
void matrix_add_to_diag(uint8_t n, matrix_t A[][n], uint8_t diag_el_num, matrix_t value)
Add a number to diagonal elements of a matrix.
uint8_t matrix_get_rank(uint8_t m, uint8_t n, matrix_t singl_values_arr[], uint8_t length)
Compute the rank of a matrix.
void matrix_get_upp_triang(uint8_t m, uint8_t n, matrix_t A[][n], matrix_t tr_up_A[][n])
Gets the upper triangular part of a matrix.
void matrix_trans_mul_vec(uint8_t m, uint8_t n, matrix_t A[m][n], uint8_t b_size, matrix_t b_vec[m], matrix_t c_vec[n])
Compute the multiplication of transposed matrix with column vector.
void matrix_vec_mul_matr(uint8_t m, uint8_t n, matrix_t vec[m], matrix_t matrix[m][n], matrix_t dst_arr[n])
Compute the multiplication of row vector and a matrix.
void matrix_get_diag_mat(uint8_t m, uint8_t n, matrix_t value, matrix_t diag_matrix[m][n])
Create a diagonal matrix with a specified value.
void matrix_flex_print(uint8_t m, uint8_t n, matrix_t matrix[m][n], uint8_t before_dec, uint8_t after_dec)
Display the values of the matrix elements.
void matrix_mul_col_vec_row_vec(uint8_t m, matrix_t col_vec[m], uint8_t n, matrix_t row_vec[n], uint8_t max_n, matrix_t res_mat[][max_n])
Compute the multiplication of a column and row vector.
void matrix_get_low_triang(uint8_t m, uint8_t n, matrix_t A[][n], matrix_t tr_low_A[][n])
Gets the lower triangular part of a matrix.
void matrix_mul_scalar(uint8_t m, uint8_t n, matrix_t mat_src[m][n], matrix_t value, matrix_t mat_dest[m][n])
Multiply all elements of a matrix with a specified value.
A structure to define the row and column number of a matrix.
void matrix_flex_part_print(uint8_t m, uint8_t n, matrix_t matrix[m][n], uint8_t start_row_ind, uint8_t end_row_ind, uint8_t start_col_ind, uint8_t end_col_ind, uint8_t before_dot, uint8_t after_dot)
Display the values of the sub-matrix elements.
void matrix_get_inv_low_triang(uint8_t m, uint8_t n, matrix_t L[][n], matrix_t inv_L[][m])
Computes the inverse a lower triangular matrix.
double matrix_get_two_norm(uint8_t m, uint8_t n, matrix_t A[][n])
Get the 2-norm of a matrix that is equal to the largest singular value.
void matrix_mul_scalar_vec_matr(uint8_t m, uint8_t n, matrix_t scalar, matrix_t vec[m], matrix_t matrix[m][n], matrix_t dst_arr[n])
Compute the multiplication of a scalar with row vector and a matrix.
matrix_t matrix_read(uint8_t m, uint8_t n, matrix_t matrix[m][n], uint8_t i, uint8_t j)
Get the value of a matrix at the position (i,j).
void matrix_copy(uint8_t m, uint8_t n, matrix_t src_matrix[m][n], matrix_t dest_matrix[m][n])
Copy the elements of a matrix to another matrix.
void matrix_set_diag_elements(uint8_t m, uint8_t n, matrix_t value, matrix_t diag_matrix[m][n])
Set all the diagonal elements of a matrix with a specified value.
void matrix_get_inv_upp_triang(uint8_t m, uint8_t n, matrix_t U[][n], matrix_t inv_U[][m])
Computes the inverse an upper triangular matrix.
#define matrix_t
Define the data type of the matrix elements.
void matrix_part_swap_rows(uint8_t n, matrix_t matrix[][n], uint8_t i, uint8_t j, uint8_t col_begin, uint8_t col_end)
Swaps two rows of a sub-matrix.
void matrix_get_column_vec(uint8_t m, uint8_t n, matrix_t matrix[m][n], uint8_t col_num, matrix_t col_vec[m])
Get a column of a matrix.
matrix_t matrix_get_abs_max_elem_in_part_column(uint8_t max_m, uint8_t max_n, matrix_t matrix[max_m][max_n], uint8_t row_num, uint8_t col_num)
Get the maximum absolute value of a column vector in a sub-matrix.
void matrix_print(uint8_t m, uint8_t n, matrix_t matrix[m][n])
Display the values of the matrix elements.
double matrix_get_frob_norm(uint8_t m, uint8_t n, matrix_t A[][n])
Get the Frobenius norm of a matrix.
void matrix_in_place_transpose(uint8_t m, matrix_t matrix[][m])
Computes the in-place transpose of a matrix.
matrix_t matrix_get_abs_max_elem_and_index_in_part_column(uint8_t max_m, uint8_t max_n, matrix_t matrix[max_m][max_n], uint8_t row_num, uint8_t col_num, uint8_t *index)
Get the maximum absolute value and its position in a column vector in a sub-matrix.
matrix_t matrix_get_max_elem_in_column(uint8_t m, uint8_t n, matrix_t matrix[m][n], uint8_t col_num)
Get the largest element of a column vector in a matrix.
void matrix_part_copy(uint8_t m, uint8_t n, matrix_t src_matrix[m][n], uint8_t start_row_ind, uint8_t end_row_ind, uint8_t start_col_ind, uint8_t end_col_ind, uint8_t dest_row_num, uint8_t dest_col_num, matrix_t dest_matrix[][dest_col_num])
Copy a part of a matrix to another matrix or sub-matrix.
void matrix_mul(uint8_t a_line_num, uint8_t a_col_num, matrix_t a_matrix[a_line_num][a_col_num], uint8_t b_line_num, uint8_t b_col_num, matrix_t b_matrix[b_line_num][b_col_num], matrix_t dest_matrix[a_line_num][b_col_num])
Compute the multiplication of two matrices.
void matrix_init(uint8_t m, uint8_t n, matrix_t matrix[m][n], matrix_t value)
Initialize all the elements of the matrix with a specified value.
uint8_t col_num
the column number
void matrix_get_diag_mat_new(uint8_t m, uint8_t n, matrix_t diag_matrix[m][n], uint8_t length, matrix_t vec[])
Set all the diagonal elements of a matrix with values that are saved in a vector.