泰勒窗函数中的连乘函数实现

alazar_lyb 2018-07-12 05:47:30
以下代码是MATLAB中泰勒窗函数的实现,其中提到了连乘函数,哪位高手知道PROD连乘函数的实现,请指点一下
http://www.cnblogs.com/mildsim/p/4067374.html

19 /*函数名:taylorWin
20 *说明:计算泰勒窗。泰勒加权函数
21 *输入:
22 *输出:
23 *返回:
24 *调用:prod()连乘函数
25 *其它:用过以后,需要手动释放掉*w的内存空间
26 * 调用示例:ret = taylorWin(99, 4, 40, &w); 注意此处的40是正数 表示-40dB
27 */
28 dspErrorStatus taylorWin(dspUint_16 N, dspUint_16 nbar, dspDouble sll, dspDouble **w)
29 {
30 dspDouble A;
31 dspDouble *retDspDouble;
32 dspDouble *sf;
33 dspDouble *result;
34 dspDouble alpha,beta,theta;
35 dspUint_16 i,j;
36
37 /*A = R cosh(PI, A) = R*/
38 A = (dspDouble)acosh(pow((dspDouble)10.0,(dspDouble)sll/20.0)) / PI;
39 A = A * A;
40
41 /*开出存放系数的空间*/
42 retDspDouble = (dspDouble *)malloc(sizeof(dspDouble) * (nbar - 1));
43 if(retDspDouble == NULL)
44 return DSP_ERROR;
45 sf = retDspDouble;
46
47 /*开出存放系数的空间*/
48 retDspDouble = (dspDouble *)malloc(sizeof(dspDouble) * N);
49 if(retDspDouble == NULL)
50 return DSP_ERROR;
51 result = retDspDouble;
52
53 alpha = prod(1, 1, (nbar - 1));
54 alpha *= alpha;
55 beta = (dspDouble)nbar / sqrt( A + pow((nbar - 0.5), 2) );
56 for(i = 1; i <= (nbar - 1); i++)
57 {
58 *(sf + i - 1) = prod(1,1,(nbar -1 + i)) * prod(1,1,(nbar -1 - i));
59 theta = 1;
60 for(j = 1; j <= (nbar - 1); j++)
61 {
62 theta *= 1 - (dspDouble)(i * i) / ( beta * beta * ( A + (j - 0.5) * (j - 0.5)) );
63 }
64 *(sf + i - 1) = alpha * (dspDouble)theta / (*(sf + i - 1));
65 }
66
67 /*奇数阶*/
68 if((N % 2) == 1)
69 {
70 for(i = 0; i < N; i++)
71 {
72 alpha = 0;
73 for(j = 1; j <= (nbar - 1); j++)
74 {
75 alpha += (*(sf + j - 1)) * cos( 2 * PI * j * (dspDouble)(i - ((N-1)/2))/N );
76 }
77 *(result + i) = 1 + 2 * alpha;
78 }
79 }
80 /*偶数阶*/
81 else
82 {
83 for(i = 0; i < N; i++)
84 {
85 alpha = 0;
86 for(j = 1; j <= (nbar - 1); j++)
87 {
88 alpha += (*(sf + j - 1)) * cos( PI * j * (dspDouble)(2 * (i - (N/2)) + 1) / N );
89 }
90 *(result + i) = 1 + 2 * alpha;
91
92 }
93 }
94 *w = result;
95 free(sf);
96
97 return DSP_SUCESS;
98
99 }
...全文
343 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
复变函数与积分变换 作 者: 王志勇 编 出版时间:2014 内容简介   本书是参照近年全国高校工科数学教学指导委员会工作会议的意见,结合电子类工科实际编写而成的。内容设计简明,叙述通俗易懂,定位应用和能力培养,具有针对性、先进性和系统性。本书内容包括复变函数与解析函数、复变函数的积分、级数与留数、傅立叶变换、拉普拉斯变换、Z变换与小波变换。每章习题配有基础和提高两种题型,编有相关科学家介绍,便于读者自学。本书可作为高等院校相关专业的数学教材,也可供科学和工程技术人员参考使用。 目录 第1章复变函数与解析函数(1) 1.1复数(2) 1.1.1复数的概念(2) 1.1.2复数的表示法(2) 1.1.3复数的运算(4) 1.1.4复球面(7) 1.2复变函数(8) 1.2.1区域(8) 1.2.2复变函数的概念(10) 1.2.3复变函数的极限及连续性(11) 1.3解析函数(13) 1.3.1导数与微分(13) 1.3.2解析函数(15) 1.3.3初等函数(18) *1.4保角映射(22) 1.4.1保角映射的概念(22) 1.4.2几种简单的保角映射(24) 数学家简介——欧拉(27) 习题一(29) 第2章复变函数的积分(31) 2.1复变函数的积分(32) 2.1.1复积分的概念(32) 2.1.2复积分的性质(33) 2.1.3复积分的计算(33) 2.2柯西积分定理(37) 2.2.1柯西基本定理(37) 2.2.2复合闭路定理(40) 2.3柯西积分公式(42) 2.3.1柯西积分公式(42) 2.3.2解析函数的高阶导数(45) 2.3.3解析函数与调和函数(48) 数学家简介——柯西(51) 习题二(52) 第3章 级数与留数(54) 3.1幂级数及其展开(54) 3.1.1幂级数(54) 3.1.2泰勒级数(60) 3.2洛朗级数及其展开式(62) 3.2.1双边幂级数(62) 3.2.2洛朗级数(63) 3.3留数(65) 3.3.1孤立奇点(65) 3.3.2留数的概念及留数定理(68) 3.3.3留数的计算(69) 3.4留数的应用(71) 3.4.1 计算∫2π0f(cosθ,sinθ)dθ型积分(71) 3.4.2计算∫+∞-∞P(x)Q(x)dx型积分(72) ?3.4.3计算∫+∞-∞f(x)eiλxdx型积分(73) 数学家简介——泰勒(76) 习题三(77) 第4章傅里叶变换(79) 4.1傅里叶变换(79) 4.1.1傅里叶级数的复指数形式(79) 4.1.2傅里叶变换(81) 4.2傅里叶变换的性质(87) 4.2.1傅里叶变换的性质(87) 4.2.2卷积(88) 4.3离散傅里叶变换及其性质(91) *4.3.1离散傅里叶变换的定义(91) 4.3.2离散傅里叶变换的基本性质(92) 4.4傅里叶变换的应用(94) 4.4.1解积分、微分方程问题(94) 4.4.2求解偏微分方程问题(95) 4.4.3电路系统求解问题(96) 数学家简介——傅里叶(97) 习题四(98) 第5章拉普拉斯变换与z变换(100) 5.1拉普拉斯变换的概念(101) 5.1.1问题的提出(101) 5.1.2拉普拉斯变换的定义(101) 5.1.3拉普拉斯变换的存在定理(102) 5.2拉普拉斯变换的性质(103) 5.2.1基本性质(103) 5.2.2卷积(106) *5.2.3极限性质(108) 5.3拉普拉斯逆变换(109) 5.4拉普拉斯变换的应用(110) 5.5z变换(113) 5.5.1z变换的定义(114) 5.5.2z变换的逆变换(115) 5.5.3z变换的性质和应用(117) 5.5.4z变换与拉普拉斯变换的关系(117) *5.6小波变换简介(118) 5.6.1傅里叶变换的局限(119) 5.6.2窗口傅里叶变换(119) 5.6.3小波变换(120) 5.6.4小波变换的性质(122) 数学家简介——拉普拉斯(124) 习题五(125) 附录习题答案(128)

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧