硬汉嵌入式论坛

 找回密码
 立即注册
查看: 311|回复: 3
收起左侧

[DSP] 第2版DSP数字信号处理教程中关于FFT应用的问题

[复制链接]

8

主题

5

回帖

29

积分

新手上路

积分
29
发表于 2024-3-28 15:29:59 | 显示全部楼层 |阅读模式


这是文档中的matlab例程,运行没有问题。 只是我有几点不是很明白:
1、采样率的设置问题。
我用adc采集到了一组数据。adc的采样率是80Hz,而用串口上传数据时是每隔50ms(20Hz)传输一次。
采样定理说的”采样率大于信号频率的两倍“,那么matlab中的Fs就是对应”采样率“,而串口上传的数据就是”信号频率“,那把Fs设置1000Hz,肯定能满足大于信号频率2倍,这么理解对吗?
matlab中的Fs应该怎么定呢?
2、matlab例程中的”原始信号“
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
可以看出来夹杂50Hz,和120Hz,那设置个采样率Fs=1000肯定能满足的2倍的关系。那如果adc采样率100khz,串口上传数据还是50ms(20Hz)一次,那这个Fs改设置多少呢?


3、 adc采样率80Hz_串口50ms上传一次.txt (59.38 KB, 下载次数: 2)

附件是采集到的数据,可以用这个数据做个fft分析吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2024-3-29 10:01:17 | 显示全部楼层
ADC采样率和串口上传速度没有关系。

这个展示前提是更新够需要FFT点数后,做FFT。
回复

使用道具 举报

8

主题

5

回帖

29

积分

新手上路

积分
29
 楼主| 发表于 2024-3-29 11:32:39 | 显示全部楼层
eric2013 发表于 2024-3-29 10:01
ADC采样率和串口上传速度没有关系。

这个展示前提是更新够需要FFT点数后,做FFT。

Fs = 1000;
T = 1/Fs;
L = 1000;
t = (0-1)*T;
%采样率
%采样时间单位
%信号长度
%时间序列

x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
y = x + 2*randn(size(t));
%原始信号
%原始信号叠加了噪声后

NFFT = 2^nextpow2(L);
Y=fft(y,NFFT)/L;
%求得最接近采样点的2^n,由于上面是1000点,那么最近的就是1024点。
% 进行FFT变换,除以总的采样点数,方便观察实际值。
f = Fs/2*linspace(0,1,NFFT/2+1); %频率轴,这里只显示Fs/2部分,另一半是对称的。
plot(f,2*abs(Y(1:NFFT/2+1))) %绘制波形
title('幅频相应');
xlabel('频率');
ylabel('幅度');




如果用上面的例子做FFT的时候,Fs应该设置多少呢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2024-3-30 09:28:47 | 显示全部楼层
aqwtyyh 发表于 2024-3-29 11:32
f = Fs/2*linspace(0,1,NFFT/2+1); %频率轴,这里只显示Fs/2部分,另一半是对称的。
plot(f,2*abs(Y ...

你发的这个是1KHz采集50Hz+120Hz叠加的波形
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-28 19:54 , Processed in 0.384874 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表