Matlab 进行FFT分析

2019-10-23  本文已影响0人  赵禾禾

[TOC]

基本概念

在从时域进行频域变换的基本matlab中的基本函数和数学关系.png

需要解决的问题

  • 区分0频和其他频率
  • 在只使用正频率时,乘以系数2/N,其中N为FFT的点数

频域分析的意义

数字信号处理基础

采样
FFT变换
FFT复数的意义

举例


close all; %先关闭所有图片
Adc=2;  %直流分量幅度
A1=3;   %频率F1信号的幅度
A2=1.5; %频率F2信号的幅度
F1=50;  %信号1频率(Hz)
F2=75;  %信号2频率(Hz)
Fs=256; %采样频率(Hz)
P1=-30; %信号1相位(度)
P2=90;  %信号相位(度)
N=256;  %采样点数
t=[0:1/Fs:N/Fs]; %采样时刻

%信号
S=Adc+A1*cos(2*pi*F1*t+pi*P1/180)+A2*cos(2*pi*F2*t+pi*P2/180);
%显示原始信号
plot(S);
title('原始信号');

figure;
Y = fft(S,N); %做FFT变换
Ayy = (abs(Y)); %取模
plot(Ayy(1:N)); %显示原始的FFT模值结果
title('FFT 模值');

figure;
Ayy=Ayy/(N/2);   %换算成实际的幅度, 针对半频谱
Ayy(1)=Ayy(1)/2; %直流和奈奎斯特频率处还需要/2
F=([1:N]-1)*Fs/N; %换算成实际的频率值
% F=[0:N-1]*Fs/N; %F=0:Fs/N:Fs/2-Fs/N
plot(F(1:N/2),Ayy(1:N/2));   %显示换算后的FFT模值结果
title('幅度-频率曲线图');

figure;
Pyy=[1:N/2];
for i=1:N/2
Pyy(i)=phase(Y(i)); %计算相位
Pyy(i)=Pyy(i)*180/pi; %换算为角度
end;
plot(F(1:N/2),Pyy(1:N/2));   %显示相位图
title('相位-频率曲线图');

结果

原始信号.png
FFT结果的模和序号的关系.png FFT结果正频率部分和频率的关系,即幅频图.png
相频图 可能不准确.png

参考文献

https://www.ilovematlab.cn/thread-119939-1-1.html

上一篇 下一篇

猜你喜欢

热点阅读