如何将一个矩阵的列分配给另一个矩阵,纳尔代数?

问题描述 投票:0回答:1

我正在使用 nalgebra,我想通过将一个矩阵设置为具有兼容维度的另一个矩阵的列来修改它,如下所示:

    let zero: T = convert(0.0);
    let mut basis = DMatrix::from_element(rows, rank, zero);
    // matrix is an input with dimensions rows x cols
    for i in 0..location.len()
    {
        basis.column_mut(i) = matrix.column(location[i]);
    }

我也尝试过取消引用分配的双方,并寻找某种“分配”方法,但没有运气。

set_column
不起作用,因为
DMatrix
未实现
DimName

我目前的工作是这样的,但我一点也不喜欢它:

 // Construct basis vectors initialized to 0.
    let zero: T = convert(0.0);
    let mut basis = DMatrix::from_element(rows, rank, zero);

    for i in 0..location.len()
    {
        // Copy the pivot column from the matrix.
        let col = location[i];
        for r in 0..matrix.nrows()
        {
            basis[(r, i)] = matrix[(r, col)];
        }
    }
math rust linear-algebra nalgebra
1个回答
-1
投票

我也不知道

column_mut
是什么意思,它有什么作用,或者它应该如何工作。它的文档相当稀疏(不存在)。我认为
set_column
做了你想做的事:

use nalgebra::DMatrix;
let rows = 2;
let cols = 3;
let zero = 0.0;
let mut basis = DMatrix::from_element(rows, cols, zero);
let matrix = DMatrix::from_row_slice(rows, cols, &[
  1.0, 3.0, 5.0,
  2.0, 4.0, 6.0
]);
let location = [1, 0, 2];
for i in 0..location.len() {
  basis.set_column(i, &matrix.column(location[i]));
}

(我将你的代码调整为 MWE)

© www.soinside.com 2019 - 2024. All rights reserved.