- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DCT算法
VOID ? WINAPI ? DCT(double ? *dpf, ? double ? *dpF, ? int ? r) ?
? { ? ? double ? PI ? = ? 3.1415926; ? ?
// ? 离散余弦变换点数 ? ? LONG lNum; ??
? // ? 循环变量 ? int i; ??
? // ? 中间变量 ?? double dTemp; ?
? complexdouble ? *comX; ??
?// ? 离散余弦变换点数 ?? lNum ? = ? 1r; ?
// ? 分配内存 ?? comX ? = ? new ? complexdouble[lNum*2]; ?
// ? 赋初值0 ?? memset(comX, ? 0, ? sizeof(complexdouble) ? * ? lNum ? * ? 2); ?? ?
// ? 将时域点转化为复数形式 ?? for(i=0;ilNum;i++) ?
? { ?? comX[i] ? = ? complexdouble ? (dpf[i], ? 0); ?
? } ??
? // ? 调用快速付立叶变换 ?? FFT_1D(comX,comX,r+1); ?
? ?? // ? 调整系数 ?? dTemp ? = ? 1/sqrt(lNum); ?? ?
? // ? 求dpF[0] ?? dpF[0] ? = ? comX[0].real() ? * ? dTemp; ?? ?
? dTemp ? *= ? sqrt(2); ?
? ?? // ? 求dpF[u] ?? for(i ? = ? 1; ? i ? ? lNum; ? i++) ?
? { ?
? dpF[i]=(comX[i].real() ? * ? cos(i*PI/(lNum*2)) ?
? + ? comX[i].imag() ? * ? sin(i*PI/(lNum*2))) ? * ? dTemp; ?? } ?? ?
? // ? 释放内存 ?? ? ? ? ? delete ? comX; ?
? } ?
? ??? VOID ? WINAPI ? FFT_1D(complexdouble ? * ? pCTData, ? complexdouble ? * ? pCFData, ? int ? nLevel) ?
? { ?
? int i; ?
? int ? j; ?
? int? k; ?
? ?? double ? PI ? = ? 3.1415926; ? ?
?? int nCount ? =0 ? ; ??
? nCount ? =(int)pow(2,nLevel) ? ; ??
? int nBtFlyLen; ?
? nBtFlyLen ? = ? 0 ? ; ??
? double dAngle; ??
? complexdouble ? *pCW ? ; ??
? pCW ? ? = ? new ? complexdouble[nCount ? / ? 2];? ?
? for(i ? = ? 0; ? i ? ? nCount ? / ? 2; ? i++) ?
? { ?
? dAngle ? = ? -2 ? * ? PI ? * ? i ? / ? nCount; ?
? pCW[i] ? = ? complexdouble ? ( ? cos(dAngle), ? sin(dAngle) ? ); ? ? } ?
?? complexdouble ? *pCWork1,*pCWork2; ? ?
? ?? pCWork1 ? = ? new ? complexdouble[nCount]; ??
? pCWork2 ? = ? new ? complexdouble[nCount]; ??
? complexdouble ? *pCTmp; ??
? memcpy(pCWork1, ? pCTData, ? sizeof(complexdouble) ? * ? nCount); ?
? ?? int ? nInter; ? ?
? nInter ? = ? 0; ?? ?
? for(k ? = ? 0; ? k ? ? nLevel; ? k++)?
{ ?? for(j ? = ? 0; ? j ? ? (int)pow(2,k); ? j++) ?
? { ??
? nBtFlyLen ? = ? (int)pow( ? 2,(nLevel-k) ? );? ?
? for(i ? = ? 0; ? i ? ? nBtFlyLen/2; ? i++) ?
? { ?
?
文档评论(0)