如何将公式转换成代码
How get formulas into code
这是一个关于如何使公式在代码中工作的一般性问题。我的数学技能很差,当我试图将简单的东西实现到代码中时,我就会迷路。
例如,我如何解释这个公式:
- n是什么意思?或者y = etc
y(n) = y (n-1) + ((x (n) - y (n-1))/slide)
该公式取自用于滑动音频值的maxmsp对象滑动~在信号值变化之间对输入信号进行对数滤波。这个公式是y (n) = y (n - 1) + ((x (n) - y (n - 1))/幻灯片)。对于包络跟踪和低通滤波特别有用。
每一个帮助将非常感激!
y(n)
的数学用法对应于c++: y[n]
中的数组(或vector
)索引。
因此很简单:
std::vector<float> x = foo();
std::vector<float> y(x.size());
float slide = 10; // Random guess - you should understand x[]
y[0] = x[0]; // Start the same; there's no y[-1]
for (int n = 1; i != x.size(); ++i) {
y[n] = y[n-1] + ((x[n] - y[n-1])/slide);
}
本质上,这是RC滤波器的离散等效,可能是最常见的无限脉冲响应(IIR)滤波器之一
float y(int n, float slide)
{
if (n <= 0)
{
// TODO: figure out what to do here. i.e. what is y(0).
}
float nMinus1 = y(n - 1);
return nMinus1 + (x(n) - nMinus1) / slide);
}
这很简单。您只需要解析公式以生成一个令牌列表,该列表将用于创建公式的语法树。然后你只需要用你想要的变量值对树求值,并解析任何函数项。最后,你会得到一个很好的数学公式转换成某种可计算的IR…
但说真的,如果你只需要执行一些数学计算,那么使用适当的工具,如MathCAD或其他。如果你需要编写一个使用某些公式的程序,那么就按原样在代码中实现它们,并按你的意愿使用它们。如果你需要一个程序,可以解释任何公式…好吧,阅读答案的第一部分:)
相关文章:
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在混合代码库中将C转换为C++时出现许多包含错误
- 为什么g++在未执行的代码处标记强制转换错误
- 用于将C++代码转换为 Web 程序集的脚本未终止
- 16 位到 10 位转换代码说明
- 以下对二进制转换代码的小数如何工作
- 中缀到后缀表达式转换代码不起作用
- C++中的十进制到十六进制转换代码
- 这个后缀转换 C++ 代码的中缀有什么问题
- 如何优化 YUV 到 RGB 颜色转换代码
- Win32 键转换代码输出不需要的按键
- C++ NV12 到 RGB24 转换代码
- 转换代码以使用矢量
- C++货币转换代码
- 这段c++类型转换代码在做什么?
- 缓慢运行的方向转换代码
- 在c++中转换代码页
- 转换代码从SSE2到SSE4在C
- MATLAB到c++的行转换代码
- 如何编写可转换代码,32位/64位