1. 短时傅里叶变换程序,帮忙解释一下~急~MATLAB
a=wavread('jiasiqi.wav'); %将音频信号jiasiqi.wav读入
subplot(2,1,1), %分配画布,一幅图上共两个图,这是第一个
plot(a);title('original signal'); %画出原始信号,即前面这个音频信号的原始波形
grid %添加网格线
N=256; %设置短时傅里叶变换的长度,同时也是汉明窗的长度
h=hamming(N); %设置汉明窗
for m=1:N %用汉明窗截取信号,长度为N,主要是为了减少截断引起的栅栏效应等
b(m)=a(m)*h(m)
end
y=20*log(abs(fft(b))) %做傅里叶变换,取其模值,即幅频特性,然后用分贝(dB)表示
subplot(2,1,2) %分配画布,第二副图
plot(y);title('短时谱'); %画出短时谱
grid %添加网格线
2. 怎么用matlab实现离散短时傅里叶变换
离散傅里叶变换函数:fft,help一下就可以
3. matlab中用specgram做完短时傅里叶变换如何用程序实现返回纵坐标的值
matlab自带了短时傅里叶变换的分析函数,老版本的matlab是specgram函数,新的改成了spectrogram函数,虽然一说到时频分析,都会说到小波分析,小波分析要比短时傅里叶要好云云,但在分析信号的瞬时频谱时,短时傅里叶还是有它的用武之地的。前一阵也看了一些有关小波分析的matlab实现,发现帮助中使用小波也多是除噪、压缩,都说小波是时频显微镜,它的用武之地还是在于查看高频在哪一级分解中,进而可以有效滤除一些信号,比如除噪,所以短时傅里叶变换查看瞬时频率正好互补一下。时频分析还认识的不深,一个阶段的想法而已。
另外,之前对matlab的扫频函数chirp做过总结,见http://blog.sina.com.cn/s/blog_6163bdeb0100qbqo.html,里面就是使用spectrogram函数来查看产生的扫频信号的瞬时频率的,当时不知道那个函数是干啥,就感觉好神奇,现在正好看到,总结一下吧!
spectrogram
功能:使用短时傅里叶变换得到信号的频谱图。
语法:
[S,F,T,P]=spectrogram(x,window,noverlap,nfft,fs)
[S,F,T,P]=spectrogram(x,window,noverlap,F,fs)
说明:当使用时无输出参数,会自动绘制频谱图;有输出参数,则会返回输入信号的短时傅里叶变
换。当然也可以从函数的返回值S,F,T,P绘制频谱图,具体参见例子。
参数:
x---输入信号的向量。默认情况下,即没有后续输入参数,x将被分成8段分别做变换处理,
如果x不能被平分成8段,则会做截断处理。默认情况下,其他参数的默认值为
window---窗函数,默认为nfft长度的海明窗Hamming
noverlap---每一段的重叠样本数,默认值是在各段之间产生50%的重叠
nfft---做FFT变换的长度,默认为256和大于每段长度的最小2次幂之间的最大值。
另外,此参数除了使用一个常量外,还可以指定一个频率向量F
fs---采样频率,默认值归一化频率
4. 怎样在MATLAB中做短时傅立叶变换
matlab有STFT的自带函数,你可以help下spectrogram,里面有例程。下面这个小程序就是一个STFT的小示例:
T = 0:0.001:2;
X = chirp(T,100,1,200,'q');
spectrogram(X,128,120,128,1E3);
title('Quadratic Chirp');
5. 如何对我测得的一个信号用matlab进行短时傅里叶变换
你的数据就是10kHz采样下的结果,幅度序列就是具体样本值。剩下的加窗啊,重叠长度,fft长度等等都是信号处理基础知识,你都做时频分析了,应该不需要过多解释基础知识了
6. Matlab中短时傅里叶变换中一些函数变换步骤不明,求解释!
(1)matlab是按列储存的,当然可以使1*256的了,不过需要自己设。傅里叶变化是对称变化,一般都要求数据个数是2的幂次。
(2)tfr对谁做fft变换,fft就和谁是同样大小的矩阵。
(3)上面说了,fft变换后的波谱是对称的,如果tfr是256的话,只需取256/2=128个就行。
(4)随机数组或原数据体中数据之间无关的话,那么变换后的振幅图和相位图都是上下波动的,密集线就是波动情况,密集程度与点距和线长有关。
7. 怎样在MATLAB中做短时傅立叶变换
matlab中的函数spectrogram可用于短时傅里叶变换
语法:
[S,F,T,P]=spectrogram(x,window,noverlap,nfft,fs)
[S,F,T,P]=spectrogram(x,window,noverlap,F,fs)
8. 请问一组集散点的短时傅里叶变换怎么用MATLAB实现
那是因为FFT的结果数值之间差异很大,所以在图上显示不出来,可以只显示部分区间的数值,就是限定坐标值范围。
9. 如何用matlab实现语音信号的短时傅里叶变换
matlab自带了短时傅里叶变换的分析函数,也即spectrogram函数。
其使用方式有两种
1. [S,F,T,P]=spectrogram(x,window,noverlap,nfft,fs)
2. [S,F,T,P]=spectrogram(x,window,noverlap,F,fs)
x---输入信号的向量;Window---窗函数;Noverlap---各段之间重叠的采样点数;Nfft---计算离散傅里叶变换的点数;Fs---采样频率Hz;F---在输入变量中使用F频率向量。
对应题主的问题
假设语音信号保存在wave变量中,那么,对其做短时傅里叶变换的函数语句为
[S,F,T,P]=spectrogram(wave,window,noverlap,nfft,fs)
参数可以根据具体信号的特点进行设定。