独孤一1984 发表于 2012-7-25 16:36

分辨率加倍,工频漂移

clc;
clear;
wave=load('30002.txt');
N=length(wave);
for i=1:N;
t(i)=wave(i,2);
end
t=detrend(t);
figure;
subplot(211)
plot(t)
title('原始信号');

Fs=10000

Y=fft(t)
Ayy = (abs(Y)); %取模

Ayy=Ayy/(N/2);   %换算成实际的幅度
Ayy(1)=Ayy(1)/2;
F=(-1)*Fs/N; %换算成实际的频率值
subplot(212)
plot(F(1:N/2),Ayy(1:N/2));   %显示换算后的FFT模值结果
title('幅度-频率曲线图');
以上是程序,数据在附件,结果如上图,现在想提高分辨率,分辨率=采样频率/采样点数,减小采样频率从而提高分辨率,这时结果如下图,问题:工频应该是50Hz的,怎么提高分辨率以后,就漂移了呢?

独孤一1984 发表于 2012-7-26 08:54

频谱图的横坐标变了,原来50Hz的振幅移到了25Hz。为什么?

fengchunlijdb 发表于 2012-7-26 09:39

http://forum.vibunion.com/thread-23614-1-1.html
看看这个帖子是否有所帮助

ChaChing 发表于 2012-7-26 23:55

1.相同类似帖没必要发新帖
2.减小采样频率并非单纯将Fs降低而已!
3.for i=1:N; t(i)=wave(i,2); end
这种写法不好, 直接t=wave(:,2);即可clc; clear;
wave=load('30002.txt');
t=wave(:,2); t=detrend(t); N=length(t);
Fs=10000; Ayy=abs(fft(t))*2/N; Ayy(1)=Ayy(1)/2;
F=(-1)*Fs/N; %换算成实际的频率值
figure; subplot(211); plot(t); title('原始信号');
subplot(212); plot(F(1:N/2),Ayy(1:N/2)); title('幅度-频率曲线图');%显示换算后的FFT模值结果

t=t(1:2:end); t=detrend(t); N=length(t);
Fs=5000; Ayy=abs(fft(t))*2/N; Ayy(1)=Ayy(1)/2;
F=(-1)*Fs/N; %换算成实际的频率值
figure; subplot(211); plot(t); title('原始信号');
subplot(212); plot(F(1:N/2),Ayy(1:N/2)); title('幅度-频率曲线图');%显示换算后的FFT模值结果

独孤一1984 发表于 2012-7-27 09:05

回复 4 # ChaChing 的帖子

你这两段程序,分辨率分别是多少?我的目的是想提高分辨率,并且横坐标随信号中真实频率变化

独孤一1984 发表于 2012-7-27 09:21

回复 4 # ChaChing 的帖子

第一段:采样点数是N=4620点,Fs是10KHz,分辨率=Fs/N=2.164Hz
第二段:采样隔一个采一次,采样点数是=2310点,Fs是5000Hz,分辨率=2.164Hz
没有达到提高分辨率的目的。我是想问为什么分辨率提高以后(因为分辨率=采样频率/采样点数,所以减小采样频率从而提高分辨率),原有的工频50Hz,却到了25Hz处?

yinwei198325 发表于 2012-7-27 14:41

LZ所提供的“30002.txt”中的时间信号序列,对应采样频率为10kHZ已是无法改变的事实,除非按照ChaChing的方法对该序列进行重采样,才可相应变动采样频率。
因此,要想提高频谱图的频率分辨率,只能人为提高FFT的线数,然后计算出需参与FFT运算的序列长度,即FFT点数。

梦幻大虾 发表于 2012-8-1 10:21

额。。。。。好深奥。。。。
页: [1]
查看完整版本: 分辨率加倍,工频漂移