C# Mathnet 数值多项式求值 vector/array,我必须循环吗?

C# Mathnet Numerics Polynomial Evaluate across an vector/array, do I have to loop?

好的,所以我试图摸索着将 Matlab 源代码转换为 C#。到目前为止,我已经能够在不需要实现任何循环的情况下完成所有事情。

data = 数据向量 Fourier.Forward(data.AsArray()) 接收数据并用结果覆盖原始向量。 Vector.ABS(data) 计算整个向量的绝对值 Polynomial.Fit(x.AsArray(), data.Array()) 计算并returns 多项式

的系数

但现在我需要根据 X 绘制并找到 Y 值。我能找到的唯一函数是

Polynomial.Evaluate,但它接受单个 X 值,return 是 Y。是否有一个函数可以接受我的整个向量或作为数组,它将 return 单个 vector/array 结果?

您可以使用 Linq 的 Select。

如果您在 xCol 中有一个 X 的集合,并且 Polynomial.Evaluate 将 X 计算为 Y,您可以执行以下操作:

var yCol = xCol.Select(x => Polynomial.Evaluate(x)).

它实际上是一个循环,但它看起来和行为都像一个向量函数

它的工作方式是您指定的 lamba

x => Polynomial.Evaluate(x)

应用于xCol的每个成员,产生一个输出可枚举集合。

您可以将该 lambda 解读为“给定一个 x,return Polynomial.Evaluate(x)”