在 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):
如果我有一个 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):