想做一个简单的傅里叶变换,只能显示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总线的电视图像实时仿真系统的设计。该系统首先