c#中的bsxfun类型函数

本文关键字:函数 类型 bsxfun 中的 | 更新日期: 2023-09-27 18:27:18

我正在尝试做以下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软件包。

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

c#中的bsxfun类型函数

在ILnumerics中,您不需要做任何事情。ILNumerics自动在矩阵元素上正确操作矢量:

 outmatrix = inmatrix - invector; 

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

BTW:如果你想要高效的实现,你必须使用ILNumerics函数规则:http://ilnumerics.net/FunctionRules.html

最有效的方法不是最容易维护的。对操作员进行一次检查,并对每个不同的操作员重复for循环。