我正在尝试做以下matlab函数的等效项:

outmatrix = bsxfun(@minus,inmatrix, invector);


在C锋利。我用这个:

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程序包。

我的问题:这是最有效的方法吗?因为我的矩阵可能很大。
我该如何概括这一点,以便我可以指定是否要像一个函数手柄一样进行减,加,乘,除等操作?

最佳答案

在ILnumerics中,您无需执行任何操作。 ILNumerics会自动在矩阵元素上正确操作向量:

 outmatrix = inmatrix - invector;


Docu:http://ilnumerics.net/Opoverload.html

顺便说一句:如果您想高效地执行,则必须使用ILNumerics Function规则:http://ilnumerics.net/FunctionRules.html

关于c# - C#中的bsxfun类型函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26495119/

10-12 19:32