声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3759|回复: 11

[FFT] 关于频谱显示,频率分辨率的问题

[复制链接]
发表于 2008-4-22 15:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我在对医学信号进行频谱分析,采样率为60hz,做fft时取256个信号点,fft(x,N)中的N=36000,想得到的频率分辨率为1/60,且只想观察到0.5到5hz的频谱,请问x轴怎么显示啊???

下面是我的源程序和图,我怎么得到的是0到30hz,且频率分辨率为何是5??

clear all;
close all;
clc;

load ecgdatat.txt
x=ecgdatat;
Fs=360;%原始信号的采样率
l=size(x);%4096个点

%对前4080个点采用几点平均法对原信号进行重采样fs=60
k=6;
s=zeros(680,1);
for i=1:680
    s(i)=mean(x((1+(i-1)*k):(1+(i-1)*k+k-1)));
end
fs=60;%重采样后的采样率


%低通滤波海明窗
n=64;%滤波器阶数
wn=15/180;%归一化截至频率1对应(fs/2)处
b1=fir1(n,wn,'low');%默认海明窗
y=filter(b1,1,s);
figure(1);
freqz(b1,1);
figure(2);
subplot(211);
plot(s);
subplot(212);
plot(y);
%频谱分析
N=3600;
py=fft(s(1:256),N);
mag=abs(py)*2/N;
f=(0:length(py)-1)*fs/length(py);
%f=(30:1:300)*(1/60);
figure(5);
plot(f(1:N/2),mag(1:N/2));%关键是plot的x轴不会显示,要求0.5到5hz
grid on;

[ 本帖最后由 eight 于 2008-4-22 17:26 编辑 ]
回复
分享到:

使用道具 举报

 楼主| 发表于 2008-4-22 16:01 | 显示全部楼层
数据太大传不上去,图怎么也帖不上呢


在线等
 楼主| 发表于 2008-4-22 16:11 | 显示全部楼层
这是我得到的频谱图
频谱图.JPG
 楼主| 发表于 2008-4-22 16:16 | 显示全部楼层
再次试传下数据:@o

ecgdatat.txt

35.89 KB, 下载次数: 32

 楼主| 发表于 2008-4-22 16:17 | 显示全部楼层
图跟数据都上传了,请大家帮忙分析下,感激不尽谢谢!!!:handshake
发表于 2008-4-22 20:37 | 显示全部楼层
原帖由 yyfei11 于 2008-4-22 15:41 发表

我在对医学信号进行频谱分析,采样率为60hz,做fft时取256个信号点,fft(x,N)中的N=36000,想得到的频率分辨率为1/60,且只想观察到0.5到5hz的频谱,请问x轴怎么显示啊???

下面是我的源程序和图,我怎么得到的是0到30hz,且频率分辨率为何是5??

因为在FFT变换中,频谱在N/2+1时对应于fs/2(N/2时对应fs/2之前的1条谱线),楼主在s中采样频率为60hz,fs/2便是30hz,所以plot(f(1:N/2),mag(1:N/2))是显示了从0到fs/2之前的1条谱线。
而楼主认为频率分辨率为何是5,不知是如何来的?
按楼主的要求:“频率分辨率为1/60,且只想观察到0.5到5hz的频谱”,把程序稍作修改(前面部分都没变,只把稍作改动的部分列出):
%频谱分析
N=3600;
s=s-mean(s);
py=fft(s(1:256),N);
mag=abs(py)*2/length(s);
df=fs/N;
f=(0:length(py)-1)*df;
%f=(30:1:300)*(1/60);
figure(5);
plot(f(1:N/2),mag(1:N/2));%关键是plot的x轴不会显示,要求0.5到5hz
axis([0.5 5 0 0.025]); grid on;
得图有

[ 本帖最后由 songzy41 于 2008-4-22 20:39 编辑 ]
yf2c.jpg
 楼主| 发表于 2008-4-22 22:07 | 显示全部楼层
多谢楼上的,:handshake
刚做这方面,感觉不是很懂,差不多都是照猫画虎
我再仔细看看,以后还要多请教你了

这样做了后的频率分辨率是1/60吗?
还有我不太明白:频率分辨率是1/60, 是不是就是说图形显示时每小格是1/60?这个我不是很懂,老师说让我求得的FFT的频率分辨是1/60,我的理解是每小格必须是1/60,这样频谱显示的时候就细致了。这样对吗?
发表于 2008-4-23 09:23 | 显示全部楼层
在FFT中它的频率分辨率是指两条谱线之间的频率间隔,我在程序中用df来表示:
df=fs/N=60/3600=1/60
所以频率分辨率是1/60。而画图时的打格线可以人为地去划分,如果在0.5-5Hz的这张图中,以1/60Hz来打格,则整张图都是打格线了。

评分

1

查看全部评分

 楼主| 发表于 2008-4-23 11:47 | 显示全部楼层
:@) :@) :@) :@) :@)
谢谢,我明白了
发表于 2008-4-24 18:50 | 显示全部楼层

学学

呵呵
学习下
刚开始基础小波分析
发表于 2008-4-30 13:17 | 显示全部楼层

数据分析软件

有需要对各种振动信号采集和分析仪器,数据分析的请关注以下网址
http://www.vipc.com.cn/
发表于 2013-1-8 15:40 | 显示全部楼层
,一直不断学习中。。。。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-6-1 18:38 , Processed in 0.110222 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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