Emm*_*ima 3 c++ fft std complex-numbers
我正在开发一个使用 FFT 数学的项目,遇到需要计算实部和虚部 FFT 分量的相位角的情况。在一些示例中,我看到人们使用 atan2f 来执行此操作,而在一些示例中,我看到人们将 argf 与复数类一起使用。
\n除了采用两个单独的参数与单个复数参数之外,这两个函数的操作方式有什么区别吗?如果是这样,有什么区别?
\n一直在网上搜索各种文档,似乎无法找到这个问题的清晰或简洁的答案。
\n谢谢!
\n这个来源特别令人困惑:
\n\n\n如果没有错误发生,则返回区间 [\xe2\x88\x92\xcf\x80; 中 z 的相位角;\xcf\x80]。\n处理错误和特殊情况,就像函数实现为 std::atan2(std::imag(z), std::real(z)) 一样。
\n
目前尚不清楚它们是否在所有情况下都等效,或者仅在存在边缘情况或错误时等效。
\nRun Code Online (Sandbox Code Playgroud)template<class T> T arg(const complex<T>& x);返回
x: 、 或的相位角atan2(imag(x), real(x))。
没有什么区别,std::arg(std::complex(x, y))就是std::atan2(y, x)。
如果您的复数碰巧没有相位(例如NaN+1j或0+0j),std::arg则将遵循这些参数的结果std::atan2。