前面的两个部分分别完成了信号的抽样以及DFT的计算,都是为了使用DFT得到信号的幅度谱。要得到信号的幅度谱,我们指需要对一个信号进行抽样然后计算其DFT的结果既可。

我们需要分析的信号为:幅度为0.6,频率分别为50Hz与500Hz,采样率为8000的正弦波信号的相加。

程序代码

#include<stdio.h>
#include<stdlib.h>
#include<math.h>#define PI 3.1415926535   struct data
{double real,imag;
};int main()
{int N=8000;        //序列长度double Squence[8000];       //序列double Amplitude[8000];     //幅值struct data one[8000];       //单个数据struct data sum;               //求和的结果int n;        int k;        //表示第k个数double t,f;   //信号的时间 频率//将采样信号存到Sequence[k]里面 for(k=0;k<N;k++){t=k/8000.0;f=0.6*(sin(2*PI*500*t)+sin(2*PI*50*t));Squence[k]=f;}//进行DFT计算,并输出结果for(k=0;k<N;k++){//对sum赋初值sum.real=0;               sum.imag=0;//计算第k个点处的幅值for(n=0;n<N;n++){one[n].real = cos(2*PI/N*k*n)*Squence[n];  //实部one[n].imag = -sin(2*PI/N*k*n)*Squence[n]; //虚部sum.real += one[n].real;                   //实部求和sum.imag += one[n].imag;                   //虚部求和}Amplitude[k] = sqrt(sum.real*sum.real+sum.imag*sum.imag);  //计算幅值 sqrt(a^2+b^2)printf("%.6f %.16f\n",k/8000.0,Amplitude[k]); //输出计算结果}return 0;
}

gnuplot作图命令

cd path
tcc dft2.c -o dft2.exe
dft2.exe > dft2.dat
gnuplot
plot "dft2.dat" w l

作图结果

C语言 使用DFT得到信号幅度谱相关推荐

  1. 线性调频信号(LFM)的形式及幅度谱、相位谱特性

    线性调频信号在SAR系统中非常重要,其瞬时频率是时间的线性函数.该信号常用于信号的发射,以获得均匀的信号带宽,在接收信号中则来自传感器运动.本篇博客主要讨论线性调频信号的形式,及在matlab仿真中的 ...

  2. [转]频谱、幅度谱、功率谱和能量谱

    转自:http://longer.spaces.eepw.com.cn/articles/article/item/71979# 在信号处理的学习中,有一些与谱有关的概念,如频谱.幅度谱.功率谱和能量 ...

  3. 用FFT求信号相位谱

    先看一下我收到的程序,作为研究对象的信号是这样产生的:      T=128;      N=128;      dt=T/N;      t=dt*(1:N);      x=2*cos(2*t-p ...

  4. FFT幅度谱为什么不对,需要较正

    为什么Matlab快速傅里叶算法分析出来的幅度谱需要校正  一切的根源,让我们回到DFT定义上面来,观察FFT算法对直流分量和非直流分量频率的影响.下面请大家注意观察这个式子,假设信号具有直流分量A, ...

  5. 循环自相关函数和谱相关密度(二)——实信号、复信号模型下的BPSK信号循环谱推导

    说明:接上一节循环自相关函数和谱相关密度(一)--公式推导 7 BPSK信号谱相关密度函数 7.1 实信号模型 BPSK实信号表达式可以写为 r(t)=y(t)+n(t)r(t) = y(t) + n ...

  6. 图像二维离散傅里叶变换、幅度谱、相位谱

    clear, clc I = imread('...');F = fftshift(fft2(I)); % 对图像进行二维 DFT(fft2),并移至中心位置 magn = log(abs(F)); ...

  7. matlab实现幅度调制,利用matlab实现信号幅度的调制与解调钟媛

    利用matlab实现信号幅度的调制与解调钟媛 1<MATLAB 语言>课程论文利用 MATLAB 实现信号幅度的调制与解调 姓名: 钟媛学号:12010245219专业:电子信息工程班级: ...

  8. 图像傅里叶变换,幅度谱,相位谱

    <span style="font-size:18px;">cl; img=imread('lena.jpg'); %img=double(img); f=fft2(i ...

  9. 循环自相关函数和谱相关密度(五)——实信号、复信号模型下的QPSK信号循环谱MATLAB仿真结果及代码

    关注公号[逆向通信猿]口令:循环谱 说明:接上一节循环自相关函数和谱相关密度(四)--实信号.复信号模型下的QPSK信号循环谱推导 8.4 仿真结果 8.4.1 实QPSK信号 符号速率RB = 40 ...

  10. 循环自相关函数和谱相关密度(四)——实信号、复信号模型下的QPSK信号循环谱推导

    关注公号[逆向通信猿],口令:循环谱 说明:接上一节循环自相关函数和谱相关密度(三)--实信号.复信号模型下的BPSK信号循环谱MATLAB仿真结果及代码 8 QPSK信号谱相关密度函数 8.1 实信 ...

最新文章

  1. .net 开发人员当前必须掌握的技术
  2. LIB和DLL的区别与使用,非常详细
  3. torch 常用函数
  4. 通过经度纬度得到距离
  5. 大学期末考试综合实训试题一
  6. 我的世界1.11服务器咋发信息,我的世界进服务器怎么注册怎么发信息
  7. 网页中如何使用一些特殊字体
  8. Unsupported major.minor version 52.0解决
  9. HTML table 标签的 summary 属性
  10. python安装nodejs_linux上nodejs安装
  11. fill函数 神奇的迭代器
  12. JavaWeb和WebGIS学习笔记(七)——MapGuide Open Source安装、配置以及MapGuide Maestro发布地图——超详细!目前最保姆级的MapGuide上手教程!
  13. MovieLens 1M 数据集
  14. 一名5年工作经验的程序员应该具备的技能
  15. 图床:使用新浪微博相册
  16. [Unity][C#]Regex正则表达式判断字符串
  17. 綫程池 部分代碼實現 筆記
  18. 基于光流传感器定位和导航的自主飞行无人机
  19. [Puppeteer]Puppeteer+Mocha+Chai实现端到端测试
  20. python科学计算主要学什么_以下哪些是python常用的科学计算库?_学小易找答案

热门文章

  1. python哪个版本好用-python用哪个版本好
  2. Linux通过终端查看日志命令
  3. 2048小游戏(Java)源码解析及源代码打包
  4. 高考前最后一天,AI 监考老师已就位
  5. 2020腾讯秋招笔试编程题--压缩算法
  6. 语音信号处理基础知识-常用特征及预处理
  7. c语言编程实现基2-fft,fft算法研究及基2fft算法的c语言实现.doc
  8. AccessPort 0d 0a乱码
  9. fatal:unable to access ‘https://github....‘:Failed to conect to github.com port 443:拒绝连接的解决方法
  10. B Start - 哔哩哔哩校招入职成长营