【MATLAB第18期】#源码分享 | 基于MATLAB的一维数字信号的FFT及频谱分析

简介: 【MATLAB第18期】#源码分享 | 基于MATLAB的一维数字信号的FFT及频谱分析

一维数字信号的FFT及频谱分析


给定如下式(1)所示的 1D 连续信号:

x=2sin(30πt)+0.5cos(120πt)+4sin(240πt)


(1) 设采样频率 fs = 1000Hz,对信号 x 进行离散化,并画出一个周期内的信号振幅随时间变化的波形图。


(2) 对离散信号 x 进行傅立叶变换,分别画出频谱中心化及有效频率范围(不含负频)2 种方式下的幅值(|F(u)|)随频率(u)变化的分布图,要求纵横坐标正确标注物理量和单位。


(3) 对式(1)信号,加随机噪声,重复步骤(1)和(2)的处理过程。


(4) 通过对变换结果的分析,说明采样频率 fs、奈奎斯特(Nyquist)频率(fn)及采样时间间隔△T 三者之间的相互关系,并简要描述模拟信号的采样定理。

clc,clear,close all;
T=1/15;                             %周期
fs=1000;                            %采样频率
dt=1/fs;                            %采样间隔
L=1000/fs;                          %采样长度
t=0:dt:L;                           %采样时间序列
N=length(t);                        %采样点数
df=fs/(N-1);                        %频率分辨率
f=t*fs*df-max(t*fs*df)/2;           %频率基数
x=2*sin(30*pi*t)+0.5*cos(120*pi*t)+4*sin(240*pi*t);%函数
subplot(231),plot(t(1:ceil(T/dt)),x(1:ceil(T/dt))),title('采样后的图像'),xlabel('t/s'),ylabel('幅度');%ceil是为了取序列前面部分
fx=fftshift(fft(x));               %傅里叶变换,并中心化
subplot(232),plot(f(:),abs(fx)),title('频谱中心化,幅值随频率变化的分布图'),xlabel('f/Hz'),ylabel('频谱分量');
subplot(233),plot(f(ceil(length(f)/2):length(f)),abs(fx(ceil(length(fx)/2):length(fx)))),title('有效频率范围,幅值随频率变化的分布图'),xlabel('f/Hz'),ylabel('频谱分量');
xNoise=x+2*randn(size(x));              %加随机噪声
subplot(234),plot(t(1:ceil(T/dt)),xNoise(1:ceil(T/dt))),title('(加噪声)采样后的图像'),xlabel('t/s'),ylabel('幅度');
fxNoise=fftshift(fft(xNoise));         %傅里叶变换,并中心化
subplot(235),plot(f(:),abs(fxNoise)),title('频谱中心化,(加噪声)幅值随频率变化的分布图'),xlabel('f/Hz'),ylabel('频谱分量');
subplot(236),plot(f(ceil(length(f)/2):length(f)),abs(fxNoise(ceil(length(fxNoise)/2):length(fxNoise)))),title('有效频率范围,(加噪声)幅值随频率变化的分布图'),xlabel('f/Hz'),ylabel('频谱分量');
set(gcf,'unit','normalized','position',[0,0,1.0,1.0]);%[0,0,1.0,1.0]表示左下角为原点,长和宽分别占屏幕的100%
saveas(gcf,strcat(mfilename,'_pic'),'jpg');           %以文件名加'_pic'为名保存文件
目录
打赏
0
0
0
0
267
分享
相关文章
基于GRU网络的MQAM调制信号检测算法matlab仿真,对比LSTM
本研究基于MATLAB 2022a,使用GRU网络对QAM调制信号进行检测。QAM是一种高效调制技术,广泛应用于现代通信系统。传统方法在复杂环境下性能下降,而GRU通过门控机制有效提取时间序列特征,实现16QAM、32QAM、64QAM、128QAM的准确检测。仿真结果显示,GRU在低SNR下表现优异,且训练速度快,参数少。核心程序包括模型预测、误检率和漏检率计算,并绘制准确率图。
112 65
基于GRU网络的MQAM调制信号检测算法matlab仿真,对比LSTM
BOC调制信号matlab性能仿真分析,对比功率谱,自相关性以及抗干扰性
本内容介绍了一种基于BOC(Binary Offset Carrier)调制的算法,使用Matlab2022a实现。完整程序运行效果无水印,核心代码配有详细中文注释及操作步骤视频。理论部分阐述了BOC调制在卫星导航中的应用优势:相比BPSK调制,BOC信号功率谱主瓣更窄、自相关函数主峰更尖锐,可优化旁瓣特性以减少干扰,提高频谱利用率和同步精度,适合复杂信道环境下的信号接收与处理。
基于FPGA的信号DM编解码实现,包含testbench和matlab对比仿真
本项目展示了DM编解码算法的实现与测试结果。FPGA测试结果显示为T1,Matlab仿真结果为T2。使用软件版本为Matlab 2022a和Vivado 2019.2。核心程序包含详细中文注释和操作视频。DM编解码通过比较信号样本差值进行编码,适用于音频等低频信号处理。硬件结构包括编码器(采样器、减法器、比较器)和解码器(解码器、积分器)。
一维信号的小波变换与重构算法matlab仿真
本程序使用MATLAB2022A实现一维信号的小波变换与重构,对正弦测试信号进行小波分解和重构,并计算重构信号与原信号的误差。核心步骤包括:绘制分解系数图像、上抽取与滤波重构、对比原始与重构信号及误差分析。小波变换通过多分辨率分析捕捉信号的局部特征,适用于非平稳信号处理,在信号去噪、压缩等领域有广泛应用。
基于梯度流的扩散映射卡尔曼滤波算法的信号预处理matlab仿真
本项目基于梯度流的扩散映射卡尔曼滤波算法(GFDMKF),用于信号预处理的MATLAB仿真。通过设置不同噪声大小,测试滤波效果。核心代码实现数据加载、含噪信号生成、扩散映射构建及DMK滤波器应用,并展示含噪与无噪信号及滤波结果的对比图。GFDMKF结合非线性流形学习与经典卡尔曼滤波,提高对非线性高维信号的滤波和跟踪性能。 **主要步骤:** 1. 加载数据并生成含噪测量值。 2. 使用扩散映射捕捉低维流形结构。 3. 应用DMK滤波器进行状态估计。 4. 绘制不同SNR下的轨迹示例。
|
8月前
|
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
331 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
200 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
277 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)

热门文章

最新文章