在 MathNet 中调整矩阵大小

Resize matrix in MathNet

如果我有一个 1x5 的矩阵 A,所有值 = 1.0,并且我想通过将其他元素设为 0 将其大小调整为 1x8,我该怎么做?

Matrix<double> A = Matrix<double>.Build.Dense(1, 5, 1.0);

换句话说,是否可以对 2 个不同大小的矩阵进行乘法或运算?

如果你说的是 X 的 1,它就是向量。因此,一种选择是创建第二个向量(即 1x8),然后使用

void CopySubVectorTo(Vector<T> destination, int sourceIndex, int targetIndex, int count)

将1X5的非零元素复制到更大的向量,或者

void CopyTo(Vector<T> target)

要在矩阵中执行此操作,而不是您最初描述的向量,这里是 SetSubMatrix 的示例:

    Matrix<double> SubMatrix = Matrix<double>.Build.Dense(2, 2, 0.186);
    Matrix<double> BigMatrix = Matrix<double>.Build.Dense(3, 3);
    BigMatrix.SetSubMatrix(1, 1, SubMatrix);

请注意,您可以将子矩阵放在较大矩阵内的任何位置。这是我将子矩阵放在 BigMatrix 中的 (1,1) 处的输出。是的,如果您知道要使用什么函数,它在 MathNet 中确实有效:

这里它位于 (0,0):