2016-11-16 3 views
0

Если у меня есть матрица А, которая равна 1x5 со всеми значениями = 1,0, и я хочу изменить ее размер до 1x8, имея другие элементы как 0, как это сделать?Изменение размера матрицы в MathNet

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

Другими словами, можно ли выполнить несколько операций или выполнить любые операции с двумя матрицами разного размера?

ответ

1

Для сделать это в матрице, а не вектор вы первоначально описанные здесь пример 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); 

Примечания вы можете разместить в любом месте внутри подматрицу большей матрицы. И вот вывод, где я поместил подматрицу в (1,1) в BigMatrix. И да, это действительно работает в Mathnet, если вы знаете, какую функцию использовать:

enter image description here

и здесь она расположена в точке (0,0):

enter image description here

+0

какую библиотеку вы используете? Это Accord.NET? –

+0

Вы даже посмотрели документацию? Это матричные операции. Линейная алгебра. Приходите, парень, немного поработайте здесь. –

+0

Документация MathNet? Я все это время искал. Никогда не ударяйте что-либо как таковое. Позвольте мне заглянуть в нее снова. –

1

Если вы говорите об одном по X, это Вектор. Таким образом, один вариант, чтобы сделать второй вектор (т.е., 1x8), а затем использовать

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

скопировать ненулевые элементы 1x5 для большего вектора, или

void CopyTo(Vector<T> target) 
+0

Не обязательно вектор, рассмотрим 2x2 для расширения до 3x3, где дополнительные элементы строки и столбца 3x3 равны 0 –

+0

То же самое. Вы можете сделать вторую, большую матрицу и скопировать ненулевые значения от меньшего к большему. –

+0

не работает с MathNet. Я уже пробовал это, ошибка в размерах матрицы не согласуется. –

Смежные вопросы