Я пытаюсь сделать эквивалент следующей функции matlab:
outmatrix = bsxfun(@minus,inmatrix, invector);
в с острым. Я использовал это:
public static ILArray<double> bsxfun(ILArray<double> inmatrix, ILArray<double> invector)
{
for(int i=0; i < inmatrix.getlength(1) ;i++)
{
inmatrix[":",i] = inmatrix[":",i] -invector;
}
return inmatrix;
}
Использование пакета ILNumerics.
Мои вопросы: это самый эффективный способ? потому что мои матрицы могут быть большими. Как я могу обобщить это, чтобы я мог указать, нужно ли делать минус, плюс, раз, делиться и т.д., Например, с помощью ручки funciton?
В ILnumerics вам не нужно ничего делать. ILNumerics автоматически управляет вектором на матричных элементах:
outmatrix = inmatrix - invector;
Документ: http://ilnumerics.net/Opoverload.html
BTW: если вам нужна эффективная реализация, вы должны использовать правила функции ILNumerics: http://ilnumerics.net/FunctionRules.html
Самый эффективный способ - не самый простой в обслуживании. Сделайте одну проверку для оператора и повторите цикл for для каждого другого оператора.