【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'为名保存文件
相关文章
|
2月前
|
存储 算法 数据可视化
基于 MATLAB的GUI信号处理界面设计 源码+运行截图
基于 MATLAB的GUI信号处理界面设计 源码+运行截图
83 2
|
1月前
|
运维 算法
基于Lipschitz李式指数的随机信号特征识别和故障检测matlab仿真
本程序基于Lipschitz李式指数进行随机信号特征识别和故障检测。使用MATLAB2013B版本运行,核心功能包括计算Lipschitz指数、绘制指数曲线、检测故障信号并标记异常区域。Lipschitz指数能够反映信号的局部动态行为,适用于机械振动分析等领域的故障诊断。
|
3月前
|
机器学习/深度学习 算法
基于心电信号时空特征的QRS波检测算法matlab仿真
本课题旨在通过提取ECG信号的时空特征并应用QRS波检测算法识别心电信号中的峰值。使用MATLAB 2022a版本实现系统仿真,涵盖信号预处理、特征提取、特征选择、阈值设定及QRS波检测等关键步骤,以提高心脏疾病诊断准确性。预处理阶段采用滤波技术去除噪声,检测算法则结合了一阶导数和二阶导数计算确定QRS波峰值。
|
4月前
|
存储 算法 Serverless
【matlab】matlab基于DTW和HMM方法数字语音识别系统(源码+音频文件+GUI界面)【独一无二】
【matlab】matlab基于DTW和HMM方法数字语音识别系统(源码+音频文件+GUI界面)【独一无二】
|
4月前
|
存储 Serverless
【matlab】matlab实现倒谱法基音频率检测和共振峰检测(源码+音频文件)【独一无二】
【matlab】matlab实现倒谱法基音频率检测和共振峰检测(源码+音频文件)【独一无二】
|
5月前
|
机器学习/深度学习 算法 调度
Matlab|基于改进鲸鱼优化算法的微网系统能量优化管理matlab-源码
基于改进鲸鱼优化算法的微网系统能量管理源码实现,结合LSTM预测可再生能源和负荷,优化微网运行成本与固定成本。方法应用于冷热电联供微网,结果显示经济成本平均降低4.03%,提高经济效益。代码包括数据分段、LSTM网络定义及训练,最终展示了一系列运行结果图表。
|
6月前
|
算法 计算机视觉 异构计算
基于FPGA的图像一维FFT变换IFFT逆变换verilog实现,包含tb测试文件和MATLAB辅助验证
```markdown ## FPGA 仿真与 MATLAB 显示 - 图像处理的 FFT/IFFT FPGA 实现在 Vivado 2019.2 中仿真,结果通过 MATLAB 2022a 展示 - 核心代码片段:`Ddddddddddddddd` - 理论:FPGA 实现的一维 FFT/IFFT,加速数字信号处理,适用于高计算需求的图像应用,如压缩、滤波和识别 ```
基于高通滤波器的ECG信号滤波及心率统计matlab仿真
**摘要:** 使用MATLAB2022a,实施高通滤波对ECG信号预处理,消除基线漂移,随后分析心率。系统仿真展示效果,核心代码涉及IIR HPF设计,如二阶滤波器的差分方程。通过滤波后的信号,检测R波计算RR间期,从而得到心率。滤波与R波检测是心电生理研究的关键步骤,平衡滤波性能与计算资源是设计挑战。
|
6月前
|
机器学习/深度学习 算法 语音技术
基于语音信号MFCC特征提取和GRNN神经网络的人员身份检测算法matlab仿真
**语音识别算法概览** MATLAB2022a中实现,结合MFCC与GRNN技术进行说话人身份检测。MFCC利用人耳感知特性提取语音频谱特征,GRNN作为非线性映射工具,擅长序列学习,确保高效识别。预加重、分帧、加窗、FFT、滤波器组、IDCT构成MFCC步骤,GRNN以其快速学习与鲁棒性处理不稳定数据。适用于多种领域。
|
4月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
217 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码