大家看看这个程序 fft变换的
程序如下:m=load('30002.txt');
N=length(m);
fs=3200;%设定采样频率
n=0:N-1;
for i=1:N;
q(i,1)=m(i,2);
end;
d=q';
s0=d;
change=1024;
s1=abs(s0);
plot(1:change,s1(1:change))
title('原始信号')
grid;
%进行FFT变换并做频谱图
y=fft(s1);%进行fft变换
F=y(1:N/2+1)*2/N;
mag=abs(F);%求幅值
f=(0:length(F)-1)'*fs/length(F);%真实频率
figure(2);
plot(f,mag);%做频谱图
axis();
xlabel('频率(Hz)');
ylabel('幅值');
title('幅频谱图');
grid;
数据TXT和频域时域图如下:
file:///C:/Users/nanyi/Desktop/2.jpg
为什么频域图里突变的振幅出现在32Hz?应该在基频50Hz的,怎么回事 请高手解释! 看不明白这个程序。
这个话题应该在信号处理版块讨论吧 本帖最后由 impulse 于 2011-4-29 09:44 编辑
你这个程序问题一堆,找本基础书看看吧,首先你的信号SF=10KHz,而你人为设为3200Hz,其次,FFT不是你这么做的。 回复 4 # impulse 的帖子
大侠 !能推荐一段FFT程序给我吗? 本帖最后由 gczhang 于 2011-4-29 10:59 编辑
独孤一1984 发表于 2011-4-24 13:34 static/image/common/back.gif
程序如下:
m=load('30002.txt');
N=length(m);
你程序中fft变换前的绝对值处理不知何意?
fft变换之前需要去均值, 并且常常需要加窗处理。
另外,变换后的幅值需要归一化处理以得到正确的幅值:
x= x - mean(x)
L = length(x);
Wind = hann(L); %hanning窗
WinX = Wind.*x; %数据加窗
fftx = fft(WinX); %FFT变换
Mag = abs(fftx)/(L/2); %求幅值并归一化
fft_freq = (1:L)*(Fs/L); %Fs为采样频率
Freq = ; %绘制幅值谱用的频率变量
plot(Freq, Mag); %绘制幅值谱
clc;
clear;
wave=load('30002.txt');
M=length(wave);
N=M;%4*1024;
for i=1:N;
t(i)=wave(i,1)/1000;%采样时间数据
end;
for i=1:N;
x(i)=wave(i,2); %波形数据
end;
x=detrend(x);%去趋势项
dt=t(2)-t(1);
fs=1/dt;%采样频率
f=0:fs/N:(N-1)*fs/N;
subplot(211)
plot(t,x);
title('波形信号')
y=4*abs(fft(x))/N;
subplot(212)
plot(f(1:N/2+1),y(1:N/2+1))
title('频谱') 回复 7 # impulse 的帖子
多谢 大侠 有什么问题再沟通 回复 6 # gczhang 的帖子
我试试看 多谢关注
页:
[1]