本文主要是介绍基于C/C++语言实现凯撒窗函数[结果与matlab w = kaiser(L,beta)函数相同],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
- 1.函数源码
- 2.函数计算结果与matlab kaiser(64,0.5)函数结果对比
1.函数源码
基于VS和C/C++语言的凯撒窗函数。
#define M_EPS 1e-8double I0(double alpha)
{double dNew;double K = alpha / 2.0;const int MAXTERM = 25 + 1;double J = 1.0, dOld = 1.0;bool converge = false;for (int i = 1; i < MAXTERM; ++i){J *= K / i;dNew = dOld + J * J;if ((dNew - dOld) < M_EPS){converge = true;break;}dOld = dNew;}if (!converge)return 0;return dNew;
}std::vector<double> kaiser(int n, double alpha)
{std::vector<double> win(n);for (int i = 0; i < (n + 1) / 2; ++i){double beta = 2 * alpha * sqrt(i * (n - i - 1.0)) / (n - 1.0);win[i] = I0(beta) / I0(alpha);win[n - 1 - i] = win[i];}return win;
}
2.函数计算结果与matlab kaiser(64,0.5)函数结果对比
1.本功能函数测试用例计算结果与matlab kaiser(64,0.5)函数同参数计算结果曲线对比
2.计算结果部分数值对比
这篇关于基于C/C++语言实现凯撒窗函数[结果与matlab w = kaiser(L,beta)函数相同]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!