想做一個簡單的傅里葉變換,只能顯示32個給的原始數據,但是無法顯示處理后的數據,不知道程序上哪里出錯了,請大神看看,懷疑是子程序調用上有問題,請明示~~~坐等~~~
#include "stdio.h"#include "math.h"
void dft(x,y,a,b,n,sign);
void main()
{
int i,j,n;
double a1,a2,c,c1,c2,d1,d2,q1,q2,w,w1,w2;
double x[32],y[32],a[32],b[32];
n=32;
a1=0.9;
a2=0.3;
x[0]=1.0;
y[0]=0.0;
for(i=1;i
? ? ? ? {
? ? ? ? x
=a1*x[i-1]-a2*y[i-1];
? ? ? ? y=a2*x[i-1]+a1*y[i-1];
? ? ? ? }
printf("n原始數據n");
for(i=0;i
{
? ? ? ? for(j=0;j<2;j++)
? ? ? ? ? ? ? ? printf(" %10.7f +J %10.7f",x[2*i+j],y[2*i+j]);
? ? ? ? printf("n");
}
q1=x[n-1];
q2=y[n-1];
printf("n傅里葉變換后數據n");
dft(x,y,a,b,n,1);
for(i=0;i<2/n;i++)
{
? ? ? ? for(j=0;j<2;j++)
? ? ? ? ? ? ? ? printf(" %10.7f +J %10.7f",a[2*i+j],b[2*i+j]);
? ? ? ? ? ? ? ? printf("n");
}
system("pause");
}
/*傅里葉函數*/
void dft(x,y,a,b,n,sign)
int n,sign;
double x[],y[],a[],b[];
{int i,k;
double c,d,q,w,s;
q=6.28318530718/n;
for(k=0;k
? ? ? ? {w=k*q;
? ???a[k]=b[k]=0.0;
? ? ? ???for(i=0;i
? ? ? ? ? ? ? ? {d=i*w;
? ? ? ? ? ? ? ???c=cos(d);
? ? ? ? ? ? ? ???s=sin(d)*sign;
? ? ? ? ? ? ? ???a[k]+=c*x+s*y;
? ? ? ? ? ? ? ???b[k]+=c*y-s*x;
? ? ? ? ? ? ? ? }
? ? ? ? }
if(sign==-1)
? ? ? ? {
? ? ? ? c=1.0/n;
? ? ? ? for(k=0;k
? ? ? ? {a[k]=c*a[k];
? ? ? ? b[k]=c*b[k];
? ? ? ? }
? ? ? ? }
}
你把n附一個初值看看,,,要不然沒辦法知道你n的值
我想問一下 當初在學校學過這個傅里葉基數??但是就是不知道這個到底有什么用呀
王棟春 發表于 2016-11-8 20:40
我想問一下 當初在學校學過這個傅里葉基數??但是就是不知道這個到底有什么用呀
dantehan 發表于 2016-11-11 14:21
用處挺多,我是信號處理,把信號從時域變到頻域,便于分析它的頻域特性
加油!!!!!!!!!!!!!!!
加油。
加油
頂一個? ?? ?? ?? ?? ?? ?? ?
c++寫的控制臺啊
加油!!!!!!!!!!
你的輸入原始數據是多少個?
還有你的FFT支持多少點的,是哪里的算法,
大功率電感廠家 |大電流電感工廠
道路照明中大功率LED路燈散熱方案創建節約型社會已成為人們的共識,但是目前道路照明中仍然大量使用的高壓鈉燈燈具的綜合效率并不高,只有70%左右,且顯色指數偏低,夜間照明感覺昏暗,不利于汽車駕駛人員和行人對目標和障礙物的分辨,對道路交通
貼片功率電感:智能手機及平板電腦推出超小型升壓電源模塊 高集成 600 mA MicroSiP 電源模塊支持 9 平方毫米解決方案尺寸,可延長電池使用壽命 2012 年 7 月 18 日,北京訊 -- 日前,德州儀器 (TI) 宣布面向智能手機、平板電腦
基于PCI總線的電視圖像處理仿真系統設計摘要:為便于科研人員在電視圖像處理系統設計過程中對圖像處理的新算法進行評估和測試,降低評估測試板硬件電路的設計復雜性,在此提出了解決方案,并實現了基于PCI總線的電視圖像實時仿真系統的設計。該系統首先