C语言 使用DFT得到信号幅度谱
前面的两个部分分别完成了信号的抽样以及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得到信号幅度谱相关推荐
- 线性调频信号(LFM)的形式及幅度谱、相位谱特性
线性调频信号在SAR系统中非常重要,其瞬时频率是时间的线性函数.该信号常用于信号的发射,以获得均匀的信号带宽,在接收信号中则来自传感器运动.本篇博客主要讨论线性调频信号的形式,及在matlab仿真中的 ...
- [转]频谱、幅度谱、功率谱和能量谱
转自:http://longer.spaces.eepw.com.cn/articles/article/item/71979# 在信号处理的学习中,有一些与谱有关的概念,如频谱.幅度谱.功率谱和能量 ...
- 用FFT求信号相位谱
先看一下我收到的程序,作为研究对象的信号是这样产生的: T=128; N=128; dt=T/N; t=dt*(1:N); x=2*cos(2*t-p ...
- FFT幅度谱为什么不对,需要较正
为什么Matlab快速傅里叶算法分析出来的幅度谱需要校正 一切的根源,让我们回到DFT定义上面来,观察FFT算法对直流分量和非直流分量频率的影响.下面请大家注意观察这个式子,假设信号具有直流分量A, ...
- 循环自相关函数和谱相关密度(二)——实信号、复信号模型下的BPSK信号循环谱推导
说明:接上一节循环自相关函数和谱相关密度(一)--公式推导 7 BPSK信号谱相关密度函数 7.1 实信号模型 BPSK实信号表达式可以写为 r(t)=y(t)+n(t)r(t) = y(t) + n ...
- 图像二维离散傅里叶变换、幅度谱、相位谱
clear, clc I = imread('...');F = fftshift(fft2(I)); % 对图像进行二维 DFT(fft2),并移至中心位置 magn = log(abs(F)); ...
- matlab实现幅度调制,利用matlab实现信号幅度的调制与解调钟媛
利用matlab实现信号幅度的调制与解调钟媛 1<MATLAB 语言>课程论文利用 MATLAB 实现信号幅度的调制与解调 姓名: 钟媛学号:12010245219专业:电子信息工程班级: ...
- 图像傅里叶变换,幅度谱,相位谱
<span style="font-size:18px;">cl; img=imread('lena.jpg'); %img=double(img); f=fft2(i ...
- 循环自相关函数和谱相关密度(五)——实信号、复信号模型下的QPSK信号循环谱MATLAB仿真结果及代码
关注公号[逆向通信猿]口令:循环谱 说明:接上一节循环自相关函数和谱相关密度(四)--实信号.复信号模型下的QPSK信号循环谱推导 8.4 仿真结果 8.4.1 实QPSK信号 符号速率RB = 40 ...
- 循环自相关函数和谱相关密度(四)——实信号、复信号模型下的QPSK信号循环谱推导
关注公号[逆向通信猿],口令:循环谱 说明:接上一节循环自相关函数和谱相关密度(三)--实信号.复信号模型下的BPSK信号循环谱MATLAB仿真结果及代码 8 QPSK信号谱相关密度函数 8.1 实信 ...
最新文章
- .net 开发人员当前必须掌握的技术
- LIB和DLL的区别与使用,非常详细
- torch 常用函数
- 通过经度纬度得到距离
- 大学期末考试综合实训试题一
- 我的世界1.11服务器咋发信息,我的世界进服务器怎么注册怎么发信息
- 网页中如何使用一些特殊字体
- Unsupported major.minor version 52.0解决
- HTML table 标签的 summary 属性
- python安装nodejs_linux上nodejs安装
- fill函数 神奇的迭代器
- JavaWeb和WebGIS学习笔记(七)——MapGuide Open Source安装、配置以及MapGuide Maestro发布地图——超详细!目前最保姆级的MapGuide上手教程!
- MovieLens 1M 数据集
- 一名5年工作经验的程序员应该具备的技能
- 图床:使用新浪微博相册
- [Unity][C#]Regex正则表达式判断字符串
- 綫程池 部分代碼實現 筆記
- 基于光流传感器定位和导航的自主飞行无人机
- [Puppeteer]Puppeteer+Mocha+Chai实现端到端测试
- python科学计算主要学什么_以下哪些是python常用的科学计算库?_学小易找答案
热门文章
- python哪个版本好用-python用哪个版本好
- Linux通过终端查看日志命令
- 2048小游戏(Java)源码解析及源代码打包
- 高考前最后一天,AI 监考老师已就位
- 2020腾讯秋招笔试编程题--压缩算法
- 语音信号处理基础知识-常用特征及预处理
- c语言编程实现基2-fft,fft算法研究及基2fft算法的c语言实现.doc
- AccessPort 0d 0a乱码
- fatal:unable to access ‘https://github....‘:Failed to conect to github.com port 443:拒绝连接的解决方法
- B Start - 哔哩哔哩校招入职成长营