正弦函数的频谱图(FFT)

2023-11-20

从理论上讲,正弦函数的傅里叶变换是冲击函数:

它的幅值为原正弦信号幅值的1/2倍;即:若x(t)=Acos(Ωt),则其频谱幅值最大值为A/2;如左图:
 
正弦函数的频谱图(FFT) - MR.Xiao - MR.Xiao的博客     
但是,我们用matlab求出来的频谱图却不是左边这样的,而是右图;
原因是:
1.理论中的正弦信号是无限长连续信号,而matlab,参与运算的信号只是截取了其中1个周期或多个周期的信号,就变成了有限长信号了;无限长信号和有限长信号的傅里叶变换是不一样的!      
2.理论中的正弦信号是连续的模拟信号,而应用中的正弦信号都是采样,量化处理的,是数字信号;模拟信号和数字信号的傅里叶变换是不一样的!
对于已知周期的信号,通常只需要取其中一个周期做代表分析;但实际应用中,信号的频率通常已知,但噪声的频率却不固定,所以,应尽可能长的截取信号;
下面介绍在Matlab中,如何分析正弦函数的FFT:
已知正弦信号 x(t)=4.6sin(2*pi*f0*t),每周波采样点数Ns=512,采样频率fs=f0*512;(f0为正弦信号的固有频率)
在Matlab中需要做一下处理:
1.将时间轴离散化:    ts = tp * n=(T0/Ns) * n =n/f0*512=n/fs;  n = 0:511; tp为每周波采样512点的时间间隔;
2.将连续信号x(t)离散化:x(ts)= 4.6sin(2*pi*f0*ts) = 4.6sin(2*pi*n/N);
   可以看出x(t)离散化后,已经与信号的固有频率没关系了,这个信号已经变成了与n相关的函数:
x(n)= 4.6sin(2*pi*n/N); n = 0:511;
3.离散信号在Matlab中求FFT就很容易了:
X(n)= FFT( x(n) ) *2 / Ns ;
4.根据周期信号的傅里叶变换的性质:时域的周期,造成频域的离散;时间的离散,造成频域的周期;
   可知:X(n) 为离散的,且有周期;离散点的间距正好是正弦信号的固有频率f0 ;周期为采样周期1/fs;
   X(0),X(1)....分别对应x(t)的第0次,1次...谐波;
5.如果要在二维图上显示频率与频谱幅值的关系,还需要:
   将横轴映射为频率值,映射关系为 f = n*f0;
6.根据奈奎斯特采样定理,当采样频率为fs时,可以得到FFT后的最高有效频率为fs/2;最高谐波次数为Ns/2-1;
  
具体实现如下(Matlab中,已调试通过):
%求正弦信号的傅里叶变换
Ns = 512;%采样点
n = 0 : Ns-1;
xn = 4.6*sin(2*pi*n/Ns);%离散的正弦信号
Xn =  fft( xn ) ;    %fft的结果是复数
Xn = abs(Xn) *2 /Ns; %求绝对值得到幅值,乘以2,乘以Ns是由傅里叶变换公式导致的
%用二维图显示原始正弦信号
subplot(3,1,1),plot(n, xn); %画出原始正弦信号
xlabel('n = 0:511'); ylabel('振幅');
title('原始的正弦信号');
%用二维图显示信号0~255次的谐波
Nyquist = Ns/2-1;%根据奈奎斯特定理,只需显示前255次的谐波
subplot(3,1,2),plot(n(1:Nyquist), Xn(1:Nyquist)); 
xlabel('n = 0:255'); ylabel('谐波幅值');
title('0~255次的谐波');
%用二维图显示信号频率与幅值的关系
f0 = 50;    %假设信号的固有频率为50Hz
f = n*f0;    %频率与横轴序列n的映射关系
subplot(3,1,3),plot(f(1:Nyquist), Xn(1:Nyquist)); %根据奈奎斯特定理,只需显示前fs/2部分的频谱
xlabel('f = 0, 50Hz... 255*f0 Hz '); ylabel('幅值');
title('频率与幅值的关系');
运行结果如下:
图中,在f = f0 = 50Hz时,幅值为4.6;即一次谐波幅值为4.6;
 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正弦函数的频谱图(FFT) 的相关文章

  • 解决 "/lib64/libc.so.6: version `GLIBC_2.18' not found (required by /lib64/libstdc++.so.6)"

    centos安装软件时提示缺少库 GLIBC 2 18 缺失 执行下列方法 途中不要退出 即可解决 curl O http ftp gnu org gnu glibc glibc 2 18 tar gz tar zxf glibc 2 18
  • Android studio创建秘钥提示JKS密钥库使用专用格式。建议使用“keytool -importkeystore -srckeystore....

    1 复制图中 内的内容 keytool importkeystore srckeystore F AndroidTestKey testtow jks destkeystore F AndroidTestKey testtow jks de
  • 标签分布学习

    目录 前言 传统的方法 论文方法 总结 前言 一般来说我们的标签数据都是硬标签 非0即1 如one hot或multi one hot 但是一些软标签有时候更具有意义 含有的信息也越丰富 即标签分布如 0 1 0 2 0 7 而不是 0 0
  • RUST零基础怎么学习?

    Rust编程语言零基础入门 小组互助式学习 时间2周 全程有Mentor帮带教学 学习链接 含微信学习交流群 https rustedu com course 101
  • 搭建谷歌云

    Google Cloud 不需要任何money的 但是你需要你一张visa的信用卡 因为Google会验证账户的真实性 先从账户扣除1美元 过一会儿就会退回来的 一般5分钟左右 注意 搭建Google Cloud的过程中 也是需要处于不被和
  • 白盒测试与黑盒测试--(详解)

    一 白盒测试 1 概念 白盒测试也称为结构测试或逻辑驱动测试 是针对被测单元内部是如何进行工作的测试 它根据程序的控制结构设计测试用例 主要用于软件或程序验证 白盒测试法检查程序内部逻辑结构 对所有的逻辑路径进行测试 是一种穷举路径的测试方
  • SIFT的两个版本:OpenCV和VL_SIFT

    暂时记录一下 OpenCV版本 include
  • React官方文档--Lifting State Up

    Lifting State Up 如果 几个组件需要同时影响并且修改同一个数据 我们建议将这个共享状态进行提升 给他们最近的共同祖先 在这个部分 我们将要创建一个温度计算器来判断水会不会在给定温度下沸腾 我们将从一个叫做BoilingVer
  • STM32标准库软件模拟IIC驱动0.96OLED屏幕4pin模块,全系列通用

    我前一篇博客提到采用SPI协议驱动0 96OLED屏幕 顺便把IIC协议的也一起写了 主体思路一致 放个之前的链接 STM32HAL库软件模拟SPI驱动0 96OLED屏幕 F1 F4系列通用 6pin和7pin模块通用 plmm 的博客
  • Linux芯片级移植与底层驱动

    原文地址 http blog csdn net 21cnbao article details 8545088 1 SoC Linux底层驱动的组成和现状 为了让Linux在一个全新的ARM SoC上运行 需要提供大量的底层支撑 如定时器节
  • tensorflow2.5.0 在CUDA11.0中出现‘libcusolver.so.11‘问题

    2022 02 10 18 08 22 877173 I tensorflow stream executor platform default dso loader cc 53 Successfully opened dynamic li
  • excel打印预览字体重叠_电脑新手办公:Excel表格的打印技巧,建议收藏

    打印预览时网格线怎么不见了 如何调整打印区域的页边距 如何设置单色打印 这些打印时遇到的麻烦问题该怎样解决呢 今天小编就给大家分享几个平常打印 Excel 表格时的必备技巧 01 调整页边距 除了我们上节课讲的用缩放功能把表格调整到一页 还
  • 微信小程序的兼容处理汇总(不定期更新)

    目录 1 名词统一 2 兼容问题的几种情况 3 问题分类 3 1 Api相关 3 1 1 wx makePhoneCall 拨打电话页面样式不一致 3 1 2 wx enableAlertBeforeUnload 监听右滑返回上一页询问对话
  • 工厂函数与构造函数

    工厂函数
  • HCIE云计算之FusionCloud 6.3部署架构

    HCIE云计算之FusionCloud 6 3部署架构 一 不同的type类型场景需求 二 Region Type 1部署方案 1 Region Type 1简介 2 Region Type 1部署私有云介绍 3 Region Type 1
  • 在机器学习领域,怎样写好一篇学术论文

    当你做好了一个研究工作 准备发表出来与同仁们分享 一个首要的任务是把你的工作变成一篇文章 问题来了 怎样写作一篇高质量的文章呢 我们以机器学习领域的应用型文章为例 探讨一下论文写作的问题 注意 任何好的文章都要以好的研究工作为基础 我们这里
  • 11、每日最新新闻接口,免费好用

    1 前言 在线自定义参数接口 这个是RollToolsApi通用系列接口的其中一个 内部包含了3个小接口 能实现获取分类新闻列表和新闻详情 这个接口的特点是内容更新延迟低 查看接口完整信息 https www mxnzp com doc d
  • Soft Knee (Compression)

    A type of compression where the onset of compression is gradual In normal or hard knee compression when the signal reach
  • socket实验—udp超时设置

    服务端程序 手动设置了丢包 from socket import import random serverport 12000 serverSocket socket AF INET SOCK DGRAM serverSocket bind
  • catia之车灯设计

    初来乍到 初次涉猎 关于我的一些情况的说明 如何画图 大致绘图轮廓 内部结构绘制 总结 初次涉猎 关于我的一些情况的说明 最近入职了一家新公司 主要是使用catia进行车灯的设计 本人之前所进行的三维设计一般都是零件结构类的设计 所绘制的造

随机推荐