/*
* test2.cpp
*
* Created on: 2013年8月12日
* Author: zhijian
*/
#include <stdio.h>
#include <math.h>
#define RATE 20 //采样频率
#define N 20 //采样点数
#define PI 3.1415926535
double src[N]; //输入序列
double real[N]; //输出序列实部
double image[N]; //输出序列虚部
void DFT(){
double W = PI * 2 / N;
for(int i = 0;i<N;i++){
real[i] = 0;
image[i] = 0;
double temp = W * i;
for(int j = 0;j<N;j++){
real[i] += src[j] * cos(temp * j);
image[i] += src[j] * sin(temp * j);
}
}
}
/*
* 模拟波形(单一频率)
*
* derta为相位差
* f为频率
* dc为直流分量
* A为幅值
*/
void F(int derta,int f,double dc,double A){
//模拟波形
for(int i = 0;i<N;i++)
src[i] = A * sin((derta + i)*2*f*PI/RATE) + dc;
DFT();
prin
DFT 频谱分析原理
最新推荐文章于 2024-06-25 11:15:35 发布
本文通过C++代码展示了离散傅立叶变换(DFT)的实现过程,用于分析模拟波形的频率分量。讨论了DFT结果中幅值与频率的关系,并强调了采样频率的重要性,必须大于源信号最高频率的两倍,以避免混叠现象。
摘要由CSDN通过智能技术生成