注意fft画图横坐标的设置
来源:互联网 发布:杭州单片机工程师招聘 编辑:程序博客网 时间:2024/06/05 07:48
clc;
t=0:0.001:5;
n=5001;
Fs=1000;
Fc=200;
x=cos(2*pi*Fc*t);
y1=fft(x);
y2=fftshift(y1);
f=(0:5000)*Fs/n-Fs/2;
hold on;
plot((0:5000)*Fs/n,abs(y1),'r')
%plot(t,abs(y1),'r')
plot(f,abs(y1),'r')
plot(f,abs(y2),'b')
一个模拟信号,经过 ADC 采样之后,就变成了数字信号。采样定理告诉我们,采样频率要大于信号
频率的两倍(要满足奈奎斯特采样定律)。
采样得到的数字信号,就可以做 FFT 变换了。N 个采样点,经过 FFT 之后,就可以得到 N 个点的 FFT
结果。为了方便进行 FFT 运算,通常 N 取 2 的整数次方。
假设采样频率为 Fs,信号频率 F,采样点数为 N。那么 FFT 之后结果就是一个为 N 点的复数。每一
个点就对应着一个频率点。这个点的模值,就是该频率值下的幅度特性。具体跟原始信号的幅度有什么关
系呢?假设原始信号的峰值为 A,那么 FFT 的结果的每个点(除了第一个点直流分量之外)的模值就是 A
的 N/2 倍。 而第一个点就是直流分量,它的模值就是直流分量的 N 倍。而每个点的相位呢,就是在该频
率下的信号的相位。第一个点表示直流分量(即 0Hz),而最后一个点 N 的再下一个点(实际上这个点
是不存在的,这里是假设的第 N+1 个点,可以看做是将第一个点分做两半分,另一半移到最后)则表示
采样频率 Fs, 这中间被 N-1 个点平均分成 N 等份, 每个点的频率依次增加。 例如某点 n 所表示的频率为:
(n − 1)xF s
F n =---------------
N
由上面的公式可以看出,F n 所能分辨到频率为 F s /N,如果采样频率 F s 为 1024Hz,采样点数为 1024
点,则可以分辨到 1Hz。1024Hz 的采样率采样 1024 点,刚好是 1 秒,也就是说,采样 1 秒时间的信号
并做 FFT,则结果可以分析到 1Hz,如果采样 2 秒时间的信号并做 FFT,则结果可以分析到 0.5Hz。如果
要提高频率分辨力,则必须增加采样点数,也即采样时间。频率分辨率和采样时间是倒数关系。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Fs = 256; % 采样率
N = 256; % 采样点数
n = 0:N-1; % 采样序列
t = 0:1/Fs:1-1/Fs; % 时间序列
f = (-N/2:N/2-1) * Fs / N; %真实的频率
x = 1.5*sin(2*pi*50*t+pi/3) ; %原始信号
y = fft(x, N); %对原始信号做 FFT 变换
Mag = abs(y); %求 FFT 转换结果的模值
subplot(2,1,1);
%plot(n, Mag); %绘制幅频相应曲线
%plot(n* Fs / N, Mag); %绘制幅频相应曲线
plot(f, Mag); %绘制幅频相应曲线
title('fft 幅频相应');
xlabel('频率/Hz');
ylabel('幅度');
z = fftshift(y); %对 FFT 转换后的结果做偏移。
subplot(2,1,2);
plot(f, z); %绘制幅频相应曲线
title('fftshift 幅频相应');
xlabel('频率/Hz');
ylabel('幅度');
- 注意fft画图横坐标的设置
- 处理FFT横坐标问题MATLAB
- echars设置横坐标倾斜
- Matplotlib关于以时间为横坐标画图
- excel设置曲线图横坐标值
- 设置matplotlib 横坐标为毫秒
- FFT在MATLAB画图步骤
- matlab 画图的坐标设置
- pyqtgraph如何设置字符串类型横坐标
- matlab画图:绘制双图,上图以条形图(分割开来的两根bar),下图是残差。。。横坐标为日期
- vml 画图注意
- rose 2003画图的一个要注意的地方
- rose 2003画图的一个要注意的地方
- VC 画图时字体的设置
- matlab中plot画图参数的设置
- matplotlib画图时的中文设置
- matplotlib画图时的中文设置
- matplotlib画图时的中文设置
- 注释:打印集合的所有子集
- Quadratic Bezier curve length
- Introduction
- Django基础 :session会话、认证系统、内容分页、中间件
- 软阈值(Soft Thresholding)函数解读
- 注意fft画图横坐标的设置
- git的使用指令
- 小技巧汇总(不定时更新···)
- 机房收费系统—结账
- label根据文本自适应高度
- 认识CoreData—初识CoreData
- 美军用核潜艇发动黑客攻击:逼近他国海岸窃听
- phoenix jdbc driver查询源码分析
- SWT中TEXT复制黏贴长度默认限制为10字节的问题