首页 > 解决方案 > C# Mathnet 数值多项式跨向量/数组求值,我必须循环吗?

问题描述

好的,所以我试图通过将 Matlab 源代码转换为 C# 来摸索我的方式。到目前为止,我已经能够做所有事情而无需实现任何循环。

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

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

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

标签: c#polynomial-mathmathnet-numerics

解决方案


您可以使用 Linq 的 Select。

如果您在 xCol 中有 X 的集合,并将Polynomial.EvaluateX 评估为 Y,则可以执行以下操作:

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

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

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

x => Polynomial.Evaluate(x)

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

您可以将该 lambda 读取为“给定 x,返回 Polynomial.Evaluate(x)”


推荐阅读