24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 364  |  回复: 2
当前主题已经存档。

winner00

铁杆木虫 (著名写手)

[交流] 【求助】求助C++算法 互相关 FFT变换【已完结】

求助C++算法 互相关   FFT变换
求两个信号的互相关函数数据,并且如果是两个数据之间存在时间漂移 得到漂移量。   对两个信号量的 FFT 变换
请高手指点一二
谢谢
有程序最好啦
谢谢你大虾


yufeng8121@sina.com.cn

[ Last edited by 波不动 on 2009-11-26 at 13:02 ]
回复此楼
上天可以赐食于鸟,但决不会置食于鸟巢;只有自己亲自去寻找,才会得到那最美味的“佳肴”!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

波不动

木虫 (正式写手)

Wave No Move

★ ★ ★ ★ ★ ★ ★ ★ ★
余泽成(金币+1,VIP+0):谢谢应助! 11-25 23:32
winner00(金币+8,VIP+0):非常感谢你的回复 11-26 12:59
这我经常用的两个C++语言的代码,一个是最简单的互相关函数,一个是FFT的函数。有问题的话,请跟帖回复。
CODE:
//相关计算(计算x[n]与h[m]的互相关,结果为y[n])
void cor(double *x,int n,double *h,int m,double *y)
{
        int i,j;
        for(i=0;i         {
                y[i]=0.0;
                for(j=0;j                 {
                        if(i<=j)
                                y[i]+=x[j]*h[j-i];
                }
        }
}

CODE:
//                    一维快速傅里叶变换程序(kfft)                       
// n=采样点数;K=蝶形维数;l=0正变换,1反变换;il=0输出为频谱,1输出振幅谱和相位谱
void kfft(float pr[],float pi[],int n,int k,float fr[],float fi[],int l,int il)
  { int it,m,is,i,j,nv,l0;
    float p,q,s,vr,vi,poddr,poddi;
    for (it=0; it<=n-1; it++)
      { m=it; is=0;
        for (i=0; i<=k-1; i++)
          { j=m/2; is=2*is+(m-2*j); m=j;}
        fr[it]=pr[is]; fi[it]=pi[is];
      }
    pr[0]=1.0; pi[0]=0.0;
    p=6.283185306/(1.0*n);
    pr[1]=cos(p); pi[1]=-sin(p);
    if (l!=0) pi[1]=-pi[1];
    for (i=2; i<=n-1; i++)
      { p=pr[i-1]*pr[1]; q=pi[i-1]*pi[1];
        s=(pr[i-1]+pi[i-1])*(pr[1]+pi[1]);
        pr[i]=p-q; pi[i]=s-p-q;
      }
    for (it=0; it<=n-2; it=it+2)
      { vr=fr[it]; vi=fi[it];
        fr[it]=vr+fr[it+1]; fi[it]=vi+fi[it+1];
        fr[it+1]=vr-fr[it+1]; fi[it+1]=vi-fi[it+1];
      }
    m=n/2; nv=2;
    for (l0=k-2; l0>=0; l0--)
      { m=m/2; nv=2*nv;
        for (it=0; it<=(m-1)*nv; it=it+nv)
          for (j=0; j<=(nv/2)-1; j++)
            { p=pr[m*j]*fr[it+j+nv/2];
              q=pi[m*j]*fi[it+j+nv/2];
              s=pr[m*j]+pi[m*j];
              s=s*(fr[it+j+nv/2]+fi[it+j+nv/2]);
              poddr=p-q; poddi=s-p-q;
              fr[it+j+nv/2]=fr[it+j]-poddr;
              fi[it+j+nv/2]=fi[it+j]-poddi;
              fr[it+j]=fr[it+j]+poddr;
              fi[it+j]=fi[it+j]+poddi;
            }
      }
    if (l!=0)
      for (i=0; i<=n-1; i++)
        { fr[i]=fr[i]/(1.0*n);
          fi[i]=fi[i]/(1.0*n);
        }
    if (il!=0)
      for (i=0; i<=n-1; i++)
        { pr[i]=sqrt(fr[i]*fr[i]+fi[i]*fi[i]);
          if (fabs(fr[i])<0.000001*fabs(fi[i]))
            { if ((fi[i]*fr[i])>0) pi[i]=90.0;
              else pi[i]=-90.0;
            }
          else
            pi[i]=atan(fi[i]/fr[i])*360.0/6.283185306;
        }
    return;
  }

[ Last edited by 波不动 on 2009-11-25 at 22:47 ]
端好自己的碗,吃好自己的饭。
2楼2009-11-25 22:46:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

波不动

木虫 (正式写手)

Wave No Move

★ ★ ★
余泽成(金币+1,VIP+0):辛苦了! 11-25 23:32
winner00(金币+2,VIP+0):感谢啦 11-26 13:00
如果两个相同信号存在时移,输出时移量的问题,其实就是相当于求得的相关结果的极大值对应的时间值,就是回波信号的延迟时间。
只要将程序改一下就可以实现了!你可以自己试一下,判断得到的相关结果y的极大值的时间然后输出来!!

[ Last edited by 波不动 on 2009-11-25 at 22:57 ]
端好自己的碗,吃好自己的饭。
3楼2009-11-25 22:54:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 winner00 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 压国家一区线,求导师收留,有恩必谢! +7 迷人的哈哈 2026-03-28 7/350 2026-03-28 16:47 by 催化大白
[考研] 22408 359分调剂 +3 Qshers 2026-03-27 4/200 2026-03-28 16:45 by Qshers
[考研] 调剂310 +6 温柔的晚安 2026-03-25 7/350 2026-03-28 16:04 by qq2000
[考研] 0703化学求调剂 +9 奶油草莓. 2026-03-22 10/500 2026-03-28 13:30 by 唐沐儿
[考研] 070300求调剂306分 +4 26要上岸 2026-03-27 4/200 2026-03-28 13:06 by 唐沐儿
[材料工程] 一志愿C9材料与化工专业总分300求调剂 +8 曼111 2026-03-24 9/450 2026-03-28 07:58 by YYYYX1234
[考研] 086000调剂 +3 7901117076 2026-03-26 3/150 2026-03-27 21:34 by Jianing_Mi
[考研] 一志愿211院校 344分 东北农业大学生物学学硕,求调剂 +5 丶风雪夜归人丶 2026-03-26 8/400 2026-03-27 19:22 by 丶风雪夜归人丶
[考研] 085601 材料工程 313分 求调剂 +5 Ong3 2026-03-27 5/250 2026-03-27 12:24 by goldfish51
[考研] 材料求调剂 +5 .m.. 2026-03-25 5/250 2026-03-27 11:08 by 不吃魚的貓
[考研] 321求调剂 +6 wasdssaa 2026-03-26 6/300 2026-03-26 20:57 by sanrepian
[考研] 材料调剂 5+4 想要一壶桃花水 2026-03-25 10/500 2026-03-26 19:56 by 不吃魚的貓
[考研] 打过很多竞赛,085406控制工程300分,求调剂 +3 askeladz 2026-03-26 3/150 2026-03-26 09:08 by 给你你注意休息
[考研] 0854AI CV方向招收调剂 +4 章小鱼567 2026-03-23 4/200 2026-03-25 17:04 by CoderLoser
[考研] 0854人工智能方向招收调剂 +4 章小鱼567 2026-03-24 4/200 2026-03-25 13:29 by 2177681040
[考研] 一志愿武理085500机械专业总分300求调剂 +3 an10101 2026-03-24 7/350 2026-03-25 00:00 by 山鬼0-
[考博] 26申博自荐 +3 whh869393 2026-03-24 3/150 2026-03-24 09:55 by 21018060
[考研] 384求调剂 +3 子系博 2026-03-22 6/300 2026-03-23 21:45 by 子系博
[考研] 接收2026硕士调剂(学硕+专硕) +4 allen-yin 2026-03-23 6/300 2026-03-23 15:04 by 汪!?!
[考研] 一志愿北京化工大学070300 学硕336求调剂 +5 vv迷 2026-03-21 8/400 2026-03-22 14:20 by ColorlessPI
信息提示
请填处理意见