早教吧 育儿知识 作业答案 考试题库 百科 知识分享

fs*(0:1023)/2048源程序是这样的,希望哪个高手能详细地讲解下,小弟感激不尽~fs=8000;%语音信号采样频率为8000x1=wavread('1.wav');t=(0:length(x1)-1)/8000;y1=fft(x1,2048);%对信号做2048点FFT变换f=fs*(0:1023)/2048;%

题目详情
fs*(0:1023)/2048
源程序是这样的,希望哪个高手能详细地讲解下,小弟感激不尽~
fs=8000; %语音信号采样频率为8000
x1=wavread('1.wav');
t=(0:length(x1)-1)/8000;
y1=fft(x1,2048); %对信号做2048点FFT变换
f=fs*(0:1023)/2048; % 主要是这一句到底是什么意思 看不懂.
figure(1)
plot(t,x1) %做原始语音信号的时域图形
grid on;axis tight;
title('原始语音信号');
xlabel('time(s)');
ylabel('幅度');
figure(2)
plot(f,abs(y1(1:1024))) %做原始语音信号的FFT频谱图
grid on;axis tight;
title('原始语音信号FFT频谱')
xlabel('Hz');
ylabel('幅度');
▼优质解答
答案和解析
用FFT的方法来观察语音信号的频谱,做FFT的时候,nfft=2048表示做FFT的点数,FFT谱线从第0点一直到第nfft/2-1点分别表示nfft个频率点
区间[0,nfft/2]与0~Fs/2对应,于是0~Fs/2就被划分成nfft个小间隔,也就是f=fs*(0:1023)/2048; 这样做FFT的图时,将其作为横轴,即
plot(f,abs(y1(1:1024))) %做原始语音信号的FFT频谱图