主要内容gydF4y2Ba

stftgydF4y2Ba

短时傅里叶变换gydF4y2Ba

描述gydF4y2Ba

例子gydF4y2Ba

年代gydF4y2Ba= stft (gydF4y2BaxgydF4y2Ba)gydF4y2Ba返回gydF4y2Ba短时傅里叶变换gydF4y2Ba(STFT)gydF4y2BaxgydF4y2Ba.gydF4y2Ba

例子gydF4y2Ba

年代gydF4y2Ba= stft (gydF4y2BaxgydF4y2Ba,gydF4y2BafsgydF4y2Ba)gydF4y2Ba的STFTgydF4y2BaxgydF4y2Ba使用抽样率gydF4y2BafsgydF4y2Ba.gydF4y2Ba

例子gydF4y2Ba

年代gydF4y2Ba= stft (gydF4y2BaxgydF4y2Ba,gydF4y2BatsgydF4y2Ba)gydF4y2Ba的STFTgydF4y2BaxgydF4y2Ba使用采样时间gydF4y2BatsgydF4y2Ba.gydF4y2Ba

例子gydF4y2Ba

年代gydF4y2Ba= stft (gydF4y2Ba___gydF4y2Ba,gydF4y2Ba名称=值gydF4y2Ba)gydF4y2Ba使用名称-值参数指定其他选项。选项包括FFT窗口和长度。这些参数可以添加到前面的任何输入语法中。gydF4y2Ba

例子gydF4y2Ba

[gydF4y2Ba年代gydF4y2Ba,gydF4y2BafgydF4y2Ba= stft(gydF4y2Ba___gydF4y2Ba)gydF4y2Ba返回频率gydF4y2BafgydF4y2Ba计算STFT的时间。gydF4y2Ba

例子gydF4y2Ba

[gydF4y2Ba年代gydF4y2Ba,gydF4y2BafgydF4y2Ba,gydF4y2BatgydF4y2Ba= stft(gydF4y2Ba___gydF4y2Ba)gydF4y2Ba返回计算STFT的时间。gydF4y2Ba

例子gydF4y2Ba

stft (gydF4y2Ba___gydF4y2Ba)gydF4y2Ba在没有输出参数的情况下,在当前图形窗口中以分贝为单位绘制STFT的幅度平方。gydF4y2Ba

例子gydF4y2Ba

全部折叠gydF4y2Ba

产生具有正弦频率变化的啁啾。信号以10khz采样2秒。gydF4y2Ba

Fs = 10e3;T = 0:1/fs:2;X = vco(sin(2*pi*t),[0.1 0.4]*fs,fs);gydF4y2Ba

计算啁啾的短时傅里叶变换。将信号分成256个采样段,并对每个采样段使用带形状参数的Kaiser窗gydF4y2BaβgydF4y2Ba= 5。指定220个相邻段之间的重叠样本,DFT长度为512。输出计算STFT时的频率和时间值。gydF4y2Ba

[s,f,t] = stft(x,fs,Window=kaiser(255,5),OverlapLength=220,FFTLength=512);gydF4y2Ba

STFT的大小平方也称为gydF4y2Ba光谱图gydF4y2Ba.用分贝绘制声谱图。指定一个跨度为60 dB的色图,其最后一种颜色对应于光谱图的最大值。gydF4y2Ba

SDB = mag2db(abs(s));网格(t、f / 1000,深发展);Cc = max(sdb(:))+[-60 0];Ax = gca;斧子。CLim = cc;(2) colorbar视图gydF4y2Ba

图中包含一个轴对象。axis对象包含一个surface类型的对象。gydF4y2Ba

方法获得相同的图形gydF4y2BastftgydF4y2Ba没有输出参数的函数。gydF4y2Ba

stft (x, fs,窗口=凯瑟(256 5),OverlapLength = 220, FFTLength = 512)gydF4y2Ba

图中包含一个轴对象。标题为短时傅里叶变换的坐标轴对象包含一个图像类型的对象。gydF4y2Ba

产生一个二次啁啾在1千赫采样2秒。瞬时频率为100hzgydF4y2Ba tgydF4y2Ba =gydF4y2Ba 0gydF4y2Ba 超过200hzgydF4y2Ba tgydF4y2Ba =gydF4y2Ba 1gydF4y2Ba 第二。gydF4y2Ba

Ts = 0:1/1e3:2;F0 = 100;F1 = 200;X = chirp(ts,f0,1,f1,gydF4y2Ba“二次”gydF4y2Ba[],gydF4y2Ba“凹”gydF4y2Ba);gydF4y2Ba

计算并显示持续时间为1 ms的二次啁啾的STFT。gydF4y2Ba

D =秒(1e-3);赢=汉明(100,gydF4y2Ba“周期”gydF4y2Ba);stft (x, d,窗口=赢,OverlapLength = 98, FFTLength = 128);gydF4y2Ba

图中包含一个轴对象。标题为短时傅里叶变换的坐标轴对象包含一个图像类型的对象。gydF4y2Ba

生成一个由1.4 kHz采样的啁啾组成的信号,持续2秒。在测量时间内,啁啾频率从600 Hz线性下降到100 Hz。gydF4y2Ba

Fs = 1400;X = chirp(0:1/fs:2,600,2,100);gydF4y2Ba

stftgydF4y2Ba违约gydF4y2Ba

函数计算信号的STFTgydF4y2Ba光谱图gydF4y2Ba而且gydF4y2BastftgydF4y2Ba功能。的默认值gydF4y2BastftgydF4y2Ba功能:gydF4y2Ba

  • 将信号划分为128个采样段,并对每个采样段进行周期性的Hann窗窗。gydF4y2Ba

  • 指定相邻段之间重叠的96个样本。这个长度相当于窗口长度的75%。gydF4y2Ba

  • 指定128个DFT点,并将STFT置于零频率的中心,频率以赫兹表示。gydF4y2Ba

验证两个结果是否相等。gydF4y2Ba

M = 128;g = hann(M,gydF4y2Ba“周期”gydF4y2Ba);L = 0.75* m;Ndft = 128;[sp,fp,tp] =谱图(x,g,L,Ndft,fs,gydF4y2Ba“中心”gydF4y2Ba);[s,f,t] = stft(x,fs);DFF = max(max(abs(sp-s)))gydF4y2Ba
DFF = 0gydF4y2Ba

使用gydF4y2Ba网gydF4y2Ba函数绘制两个输出。gydF4y2Ba

Subplot (2,1,1) mesh(tp,fp,abs(sp).^2) title(gydF4y2Ba“声谱图”gydF4y2Ba)视图(2),轴gydF4y2Ba紧gydF4y2BaSubplot (2,1,2) mesh(t,f,abs(s).^2) title(gydF4y2Ba“stft”gydF4y2Ba)视图(2),轴gydF4y2Ba紧gydF4y2Ba

图中包含2个轴对象。带有标题谱图的轴对象1包含一个类型为surface的对象。带有标题stft的Axes对象2包含一个类型为surface的对象。gydF4y2Ba

光谱图gydF4y2Ba违约gydF4y2Ba

属性的默认值重复计算gydF4y2Ba光谱图gydF4y2Ba功能:gydF4y2Ba

  • 把信号分成不同长度的片段gydF4y2Ba 米gydF4y2Ba =gydF4y2Ba ⌊gydF4y2Ba NgydF4y2Ba xgydF4y2Ba /gydF4y2Ba 4gydF4y2Ba .gydF4y2Ba 5gydF4y2Ba ⌋gydF4y2Ba ,在那里gydF4y2Ba NgydF4y2Ba xgydF4y2Ba 是信号的长度。用汉明窗口对每个段进行窗口。gydF4y2Ba

  • 指定段之间50%的重叠。gydF4y2Ba

  • 要计算FFT,使用gydF4y2Ba 马克斯gydF4y2Ba (gydF4y2Ba 256gydF4y2Ba ,gydF4y2Ba 2gydF4y2Ba ⌈gydF4y2Ba 日志gydF4y2Ba 2gydF4y2Ba 米gydF4y2Ba ⌉gydF4y2Ba )gydF4y2Ba 点。只计算正归一化频率的频谱图。gydF4y2Ba

M =地板(长度(x)/4.5);g =汉明(M);L =楼层(M/2);Ndft = max(256,2^nextpow2(M));[sx,fx,tx] =谱图(x);[st,ft,tt] = stft(x,Window=g,OverlapLength=L,FFTLength=Ndft,FrequencyRange=gydF4y2Ba“单向的”gydF4y2Ba);DFF = max(max(sx-st))gydF4y2Ba
DFF = 0gydF4y2Ba

使用gydF4y2BawaterplotgydF4y2Ba函数绘制两个输出。将频率轴除以gydF4y2Ba πgydF4y2Ba 在这两种情况下。为gydF4y2BastftgydF4y2Ba输出,用抽样数除以有效抽样率,gydF4y2Ba 2gydF4y2Ba πgydF4y2Ba .gydF4y2Ba

Subplot (2,1,1) waterplot(sx,fx/pi,tx)标题(gydF4y2Ba“声谱图”gydF4y2Ba) subplot(2,1,2) waterplot(st,ft/pi,tt/(2*pi))gydF4y2Ba“stft”gydF4y2Ba)gydF4y2Ba

图中包含2个轴对象。带有标题谱图的轴对象1包含一个patch类型的对象。标题为stft的Axes对象2包含一个类型为patch的对象。gydF4y2Ba

函数gydF4y2Bawaterplot (s, t)gydF4y2Ba%瀑布图的频谱图gydF4y2Ba瀑布(f t abs (s)”。^ 2)组(gca, XDir =gydF4y2Ba“反向”gydF4y2Ba,View=[30 50]) xlabel(gydF4y2Ba“频率/ \π”gydF4y2Ba) ylabel (gydF4y2Ba“样本”gydF4y2Ba)gydF4y2Ba结束gydF4y2Ba

产生一个5千赫采样信号,持续4秒。该信号由一组持续时间递减的脉冲组成,脉冲之间由振幅和波动频率呈递增趋势的区域隔开。画出信号。gydF4y2Ba

Fs = 5000;T = 0:1/fs:4-1/fs;X = besselj(0,600*(sin(2*pi*(t+1).^3/30).^5));情节(t, x)gydF4y2Ba

图中包含一个轴对象。axis对象包含一个line类型的对象。gydF4y2Ba

计算信号的单边、双面和中心短时傅里叶变换。在所有情况下,使用202样本Kaiser窗口的形状因子gydF4y2Ba βgydF4y2Ba =gydF4y2Ba 10gydF4y2Ba 对信号段进行窗口化。显示用于计算每个变换的频率范围。gydF4y2Ba

RNGS = [gydF4y2Ba“单向的”gydF4y2Ba“双侧”gydF4y2Ba“中心”gydF4y2Ba];gydF4y2Ba为gydF4y2BaKj = 1:length(rngs) opts = {gydF4y2Ba“窗口”gydF4y2Ba凯瑟(202、10)gydF4y2Ba“FrequencyRange”gydF4y2Ba随机数生成器(kj)};[~,f] = stft(x,fs,opts{:});Subplot (length(rngs),1,kj) stft(x,fs,opts{:}) title(sprintf(gydF4y2Ba" '%s': [%5.3f, %5.3f] kHz'gydF4y2Ba随机数生成器(kj), (f (1) f(结束)]/ 1000)gydF4y2Ba结束gydF4y2Ba

图中包含3个轴对象。标题为“onesided”的坐标轴对象1:[0.000,2.500]kHz包含一个图像类型的对象。标题为'twosided'的坐标轴对象2:[0.000,4.975]kHz包含一个图像类型的对象。标题为“居中”的Axes对象3:[-2.475,2.500]kHz包含一个图像类型的对象。gydF4y2Ba

重复计算,但现在将Kaiser窗口的长度更改为203,这是一个奇数。的gydF4y2Ba双侧的gydF4y2Ba频率间隔不变。另外两个频率区间在较高的一端成为开放的。gydF4y2Ba

为gydF4y2BaKj = 1:length(rngs) opts = {gydF4y2Ba“窗口”gydF4y2Ba凯瑟(203、10)gydF4y2Ba“FrequencyRange”gydF4y2Ba随机数生成器(kj)};[~,f] = stft(x,fs,opts{:});Subplot (length(rngs),1,kj) stft(x,fs,opts{:}) title(sprintf(gydF4y2Ba" '%s': [%5.3f, %5.3f] kHz'gydF4y2Ba随机数生成器(kj), (f (1) f(结束)]/ 1000)gydF4y2Ba结束gydF4y2Ba

图中包含3个轴对象。标题为“onesided”的坐标轴对象1:[0.000,2.488]kHz包含一个图像类型的对象。标题为'twosided'的坐标轴对象2:[0.000,4.975]kHz包含一个图像类型的对象。标题为“居中”的坐标轴对象3:[-2.488,2.488]kHz包含一个图像类型的对象。gydF4y2Ba

生成一个三通道信号,由三种不同的啁啾以1khz采样,持续一秒钟。gydF4y2Ba

  1. 第一通道由瞬时频率为100hz的凹二次啁啾组成gydF4y2Bat =gydF4y2Ba0和超过300hzgydF4y2Bat =gydF4y2Ba1秒。它的初始相位是45度。gydF4y2Ba

  2. 第二信道由瞬时频率为100hz的凸二次啁啾组成gydF4y2Bat =gydF4y2Ba0,超过500hzgydF4y2Bat =gydF4y2Ba1秒。gydF4y2Ba

  3. 第三通道由瞬时频率为300hz的对数啁啾组成gydF4y2Bat =gydF4y2Ba0,超过500hzgydF4y2Bat =gydF4y2Ba1秒。gydF4y2Ba

使用长度为128的周期汉明窗和50个样本的重叠长度计算多通道信号的STFT。gydF4y2Ba

Fs = 1e3;T = 0:1/fs:1-1/fs;X = [chirp(t,100, 1300,gydF4y2Ba“二次”gydF4y2Ba45岁的gydF4y2Ba“凹”gydF4y2Ba);唧唧声(t, 100, 1500,gydF4y2Ba“二次”gydF4y2Ba[],gydF4y2Ba“凸”gydF4y2Ba);唧唧声(t, 300, 1500,gydF4y2Ba“对数”gydF4y2Ba)];[S,F,T] = stft(x,fs,gydF4y2Ba“窗口”gydF4y2Ba128年,汉明(gydF4y2Ba“周期”gydF4y2Ba),gydF4y2Ba“OverlapLength”gydF4y2Ba, 50);gydF4y2Ba

将每个通道的STFT可视化为一个瀑布图。使用helper函数控制轴的行为gydF4y2BahelperGraphicsOptgydF4y2Ba.gydF4y2Ba

瀑布(F T abs (S (:,: 1))) helperGraphicsOpt (1)gydF4y2Ba

图中包含一个轴对象。标题为Input Channel: 1的axes对象包含一个patch类型的对象。gydF4y2Ba

瀑布(F T abs (S (:,: 2))) helperGraphicsOpt (2)gydF4y2Ba

图中包含一个轴对象。标题为Input Channel: 2的axes对象包含一个patch类型的对象。gydF4y2Ba

瀑布(F T abs (S (:,:, 3))) helperGraphicsOpt (3)gydF4y2Ba

图中包含一个轴对象。标题为Input Channel: 3的axes对象包含一个patch类型的对象。gydF4y2Ba

这个辅助函数设置当前轴的外观和行为。gydF4y2Ba

函数gydF4y2Bahelpergraphicopt (ChannelId) ax = gca;斧子。XDir =“反向”gydF4y2Ba;斧子。ZLim = [0 30];ax.Title.String = [gydF4y2Ba输入通道:gydF4y2Banum2str (ChannelId)];ax.XLabel.String =gydF4y2Ba的频率(赫兹)gydF4y2Ba;ax.YLabel.String =gydF4y2Ba的时间(秒)gydF4y2Ba;斧子。View = [30 45];gydF4y2Ba结束gydF4y2Ba

输入参数gydF4y2Ba

全部折叠gydF4y2Ba

输入信号,指定为矢量,矩阵,或MATLABgydF4y2Ba®gydF4y2Ba时间表gydF4y2Ba.gydF4y2Ba

请注意gydF4y2Ba

如果你愿意gydF4y2BaxgydF4y2Ba而且gydF4y2Ba年代gydF4y2Ba相等的长度,的值gydF4y2Ba(长度(gydF4y2BaxgydF4y2Ba) -noverlap) /(长度(窗口)-noverlap)gydF4y2Ba必须为整数。使用gydF4y2Ba窗口gydF4y2Ba指定…的长度gydF4y2Ba窗口gydF4y2Ba而且gydF4y2BaOverlapLengthgydF4y2Ba指定gydF4y2BanoverlapgydF4y2Ba.gydF4y2Ba

  • 如果输入有多个通道,请指定gydF4y2BaxgydF4y2Ba作为矩阵,每一列对应一个通道。gydF4y2Ba

  • 对于时间表输入,gydF4y2BaxgydF4y2Ba必须包含均匀递增的有限行次数。如果时间表有丢失或重复的时间点,您可以使用中的提示来修复它gydF4y2Ba缺少、重复或不均匀时间的清晰时间表gydF4y2Ba.gydF4y2Ba

  • 对于多通道时间表输入,请指定gydF4y2BaxgydF4y2Ba作为单变量包含矩阵的时间表,或包含多个变量每个变量包含一个列向量的时间表。所有变量必须具有相同的精度。gydF4y2Ba

各渠道gydF4y2BaxgydF4y2Ba必须具有大于或等于窗口长度的长度。gydF4y2Ba

例子:gydF4y2Ba唧唧声(0:1/4e3:2,250, 1500,“二次”)gydF4y2Ba指定单通道chirp。gydF4y2Ba

例子:gydF4y2Ba时间表(兰德(5,2)SampleRate = 1)gydF4y2Ba指定以1hz采样4秒的双通道随机变量。gydF4y2Ba

例子:gydF4y2Ba时间表(兰德(5,1),兰德(5、1),SampleRate = 1)gydF4y2Ba指定以1hz采样4秒的双通道随机变量。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba|gydF4y2Ba单gydF4y2Ba
复数支持:金宝appgydF4y2Ba是的gydF4y2Ba

抽样率,指定为正标量。这个论点只适用于gydF4y2BaxgydF4y2Ba是一个向量或矩阵。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba|gydF4y2Ba单gydF4y2Ba

采样时间,指定为agydF4y2Ba持续时间gydF4y2Ba标量。这个论点只适用于gydF4y2BaxgydF4y2Ba向量还是矩阵gydF4y2Ba

例子:gydF4y2Ba秒(1)gydF4y2Ba是一个gydF4y2Ba持续时间gydF4y2Ba表示连续信号样本之间1秒时间差的标量。gydF4y2Ba

数据类型:gydF4y2Ba持续时间gydF4y2Ba

名称-值参数gydF4y2Ba

指定可选参数对为gydF4y2BaName1 = Value1,…,以=家gydF4y2Ba,在那里gydF4y2Ba的名字gydF4y2Ba参数名称和gydF4y2Ba价值gydF4y2Ba对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。gydF4y2Ba

例子:gydF4y2Ba窗口=汉明(100),OverlapLength = 50, FFTLength = 128gydF4y2Ba使用100个样本的汉明窗口对数据进行窗口化,相邻段之间有50个重叠样本和128点FFT。gydF4y2Ba

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来gydF4y2Ba的名字gydF4y2Ba在报价。gydF4y2Ba

例子:gydF4y2Ba“窗口”,汉明(100),“OverlapLength”,50岁' FFTLength ', 128gydF4y2Ba使用100个样本的汉明窗口对数据进行窗口化,相邻段之间有50个重叠样本和128点FFT。gydF4y2Ba

光谱窗口,指定为矢量。如果不指定窗口或将其指定为空,则该函数使用长度为128的Hann窗口。的长度gydF4y2Ba窗口gydF4y2Ba必须大于等于2。gydF4y2Ba

有关可用窗口的列表,请参见gydF4y2Ba窗户gydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba损害(N + 1)gydF4y2Ba而且gydF4y2Ba(1-cos(2 *π* (0:N) / N)) / 2gydF4y2Ba都指定了长度的汉恩窗口gydF4y2BaNgydF4y2Ba+ 1。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba|gydF4y2Ba单gydF4y2Ba

重叠样本的数目,指定为小于的长度的正整数gydF4y2Ba窗口gydF4y2Ba.如果你省略了gydF4y2BaOverlapLengthgydF4y2Ba或将其指定为空,则将其设置为小于窗口长度75%的最大整数,默认Hann窗口为96个样本。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba|gydF4y2Ba单gydF4y2Ba

DFT点的数目,指定为正整数。该值必须大于或等于窗口长度。如果输入信号的长度小于DFT长度,则用零填充数据。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba|gydF4y2Ba单gydF4y2Ba

STFT频率范围,指定为gydF4y2Ba“中心”gydF4y2Ba,gydF4y2Ba“双侧”gydF4y2Ba,或gydF4y2Ba“单向的”gydF4y2Ba.gydF4y2Ba

  • “中心”gydF4y2Ba-计算一个双面居中STFT。如果gydF4y2BaFFTLengthgydF4y2Ba是偶数,那么gydF4y2Ba年代gydF4y2Ba在区间上计算gydF4y2Ba(-gydF4y2BaπgydF4y2Ba,gydF4y2BaπgydF4y2Ba]gydF4y2Barad /样品。如果gydF4y2BaFFTLengthgydF4y2Ba是奇怪的gydF4y2Ba年代gydF4y2Ba在区间上计算gydF4y2Ba(-gydF4y2BaπgydF4y2Ba,gydF4y2BaπgydF4y2Ba)gydF4y2Barad /样品。如果指定时间信息,则间隔为gydF4y2Ba(-gydF4y2BafgydF4y2Ba年代gydF4y2Ba,gydF4y2BafgydF4y2Ba年代gydF4y2Ba/ 2)gydF4y2Ba周期/单位时间和gydF4y2Ba(-gydF4y2BafgydF4y2Ba年代gydF4y2Ba,gydF4y2BafgydF4y2Ba年代gydF4y2Ba/ 2)gydF4y2Ba周期/单位时间,分别为gydF4y2BafgydF4y2Ba年代gydF4y2Ba是有效抽样率。gydF4y2Ba

  • “双侧”gydF4y2Ba—在此区间内计算一个双面STFTgydF4y2Ba[0, 2gydF4y2BaπgydF4y2Ba)gydF4y2Barad /样品。如果指定时间信息,则间隔为gydF4y2Ba[0,gydF4y2BafgydF4y2Ba年代gydF4y2Ba)gydF4y2Ba周期/单位时间。gydF4y2Ba

  • “单向的”gydF4y2Ba—计算单边STFT。如果gydF4y2BaFFTLengthgydF4y2Ba是偶数,那么gydF4y2Ba年代gydF4y2Ba在区间上计算gydF4y2Ba[0,gydF4y2BaπgydF4y2Ba]gydF4y2Barad /样品。如果gydF4y2BaFFTLengthgydF4y2Ba是奇怪的gydF4y2Ba年代gydF4y2Ba在区间上计算gydF4y2Ba[0,gydF4y2BaπgydF4y2Ba)gydF4y2Barad /样品。如果指定时间信息,则间隔为gydF4y2Ba[0,gydF4y2BafgydF4y2Ba年代gydF4y2Ba/ 2)gydF4y2Ba周期/单位时间和gydF4y2Ba[0,gydF4y2BafgydF4y2Ba年代gydF4y2Ba/ 2)gydF4y2Ba周期/单位时间,分别为gydF4y2BafgydF4y2Ba年代gydF4y2Ba是有效抽样率。此选项仅对实际信号有效。gydF4y2Ba

    请注意gydF4y2Ba

    当此参数设置为gydF4y2Ba“单向的”gydF4y2Ba,gydF4y2BastftgydF4y2Ba输出正Nyquist范围内的值,并且不保存总功率。gydF4y2Ba

有关示例,请参见gydF4y2Ba频率范围gydF4y2Ba.gydF4y2Ba

数据类型:gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba

输出时间维度,指定为gydF4y2Ba“acrosscolumns”gydF4y2Ba或gydF4y2Ba“downrows”gydF4y2Ba.将此值设置为gydF4y2Ba“downrows”gydF4y2Ba如果你想要时间维度gydF4y2Ba年代gydF4y2Ba沿着行向下,在列之间的频率维度。将此值设置为gydF4y2Ba“acrosscolumns”gydF4y2Ba如果你想要时间维度gydF4y2Ba年代gydF4y2Ba一列一列的频率维度。如果调用函数时没有输出参数,则忽略此输入。gydF4y2Ba

输出参数gydF4y2Ba

全部折叠gydF4y2Ba

短时间傅里叶变换,返回为矩阵或三维数组。的列中时间增加gydF4y2Ba年代gydF4y2Ba频率沿行增加。第三维度(如果存在)对应于输入通道。gydF4y2Ba

  • 如果信号gydF4y2BaxgydF4y2Ba有gydF4y2BaNgydF4y2BaxgydF4y2Ba那么,时间样本gydF4y2Ba年代gydF4y2Ba有gydF4y2BakgydF4y2Ba列,gydF4y2BakgydF4y2Ba=⌊(gydF4y2BaNgydF4y2BaxgydF4y2Ba- - - - - -gydF4y2BalgydF4y2Ba) / (gydF4y2Ba米gydF4y2Ba- - - - - -gydF4y2BalgydF4y2Ba)⌋gydF4y2Ba,gydF4y2Ba米gydF4y2Ba的长度gydF4y2Ba窗口gydF4y2Ba,gydF4y2BalgydF4y2Ba是gydF4y2BaOverlapLengthgydF4y2Ba,⌊⌋符号表示楼层函数。gydF4y2Ba

  • 行数gydF4y2Ba年代gydF4y2Ba中指定的值gydF4y2BaFFTLengthgydF4y2Ba.gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba|gydF4y2Ba单gydF4y2Ba

计算STFT的频率,作为向量返回。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba|gydF4y2Ba单gydF4y2Ba

时间瞬间,以矢量形式返回。gydF4y2BatgydF4y2Ba包含与用于计算短时功率谱估计的数据段的中心相对应的时间值。gydF4y2Ba

  • 如果一个样本率gydF4y2BafsgydF4y2Ba,则该向量包含以秒为单位的时间值。gydF4y2Ba

  • 如果一个采样时间gydF4y2BatsgydF4y2Ba,则该向量是一个与输入时间格式相同的持续时间数组。gydF4y2Ba

  • 如果没有提供时间信息,则向量包含样本号。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba|gydF4y2Ba单gydF4y2Ba

更多关于gydF4y2Ba

全部折叠gydF4y2Ba

短时傅里叶变换gydF4y2Ba

短时傅里叶变换(STFT)用于分析非平稳信号的频率内容如何随时间变化。STFT的大小平方称为gydF4y2Ba光谱图gydF4y2Ba信号的时频表示。有关频谱图以及如何使用信号处理工具箱™功能计算频谱图的更多信息,请参见gydF4y2Ba频谱图计算与信号处理工具箱gydF4y2Ba.gydF4y2Ba

信号的STFT是通过滑动运算得到的gydF4y2Ba分析窗口gydF4y2BaggydF4y2Ba(gydF4y2BangydF4y2Ba)gydF4y2Ba的长度gydF4y2Ba米gydF4y2Ba并计算每段加窗数据的离散傅里叶变换(DFT)。窗口以的间隔跳过原始信号gydF4y2BaRgydF4y2Ba样本,相当于gydF4y2BalgydF4y2Ba=gydF4y2Ba米gydF4y2Ba- - - - - -gydF4y2BaRgydF4y2Ba相邻段之间重叠的样本。大多数窗口函数在边缘逐渐减少,以避免光谱振铃。每个加窗段的DFT被添加到一个复值矩阵,其中包含每个时间和频率点的幅度和相位。STFT矩阵有gydF4y2Ba

kgydF4y2Ba =gydF4y2Ba ⌊gydF4y2Ba NgydF4y2Ba xgydF4y2Ba −gydF4y2Ba lgydF4y2Ba 米gydF4y2Ba −gydF4y2Ba lgydF4y2Ba ⌋gydF4y2Ba

列,gydF4y2BaNgydF4y2BaxgydF4y2Ba信号的长度是多少gydF4y2BaxgydF4y2Ba(gydF4y2BangydF4y2Ba)gydF4y2Ba和gydF4y2Ba⌊⌋gydF4y2Ba符号表示楼层功能。矩阵中的行数等于gydF4y2BaNgydF4y2BaDFTgydF4y2Ba为DFT点的个数,对于中心变换和双面变换,为接近的奇数gydF4y2BaNgydF4y2BaDFTgydF4y2Ba/ 2gydF4y2Ba对于实值信号的单边变换。gydF4y2Ba

的gydF4y2Ba米gydF4y2BaSTFT矩阵的第3列gydF4y2Ba XgydF4y2Ba (gydF4y2Ba fgydF4y2Ba )gydF4y2Ba =gydF4y2Ba [gydF4y2Ba XgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba fgydF4y2Ba )gydF4y2Ba XgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba fgydF4y2Ba )gydF4y2Ba XgydF4y2Ba 3.gydF4y2Ba (gydF4y2Ba fgydF4y2Ba )gydF4y2Ba ⋯gydF4y2Ba XgydF4y2Ba kgydF4y2Ba (gydF4y2Ba fgydF4y2Ba )gydF4y2Ba ]gydF4y2Ba 包含以时间为中心的加窗数据的DFTgydF4y2Ba先生gydF4y2Ba:gydF4y2Ba

XgydF4y2Ba 米gydF4y2Ba (gydF4y2Ba fgydF4y2Ba )gydF4y2Ba =gydF4y2Ba ∑gydF4y2Ba ngydF4y2Ba =gydF4y2Ba −gydF4y2Ba ∞gydF4y2Ba ∞gydF4y2Ba xgydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba ggydF4y2Ba (gydF4y2Ba ngydF4y2Ba −gydF4y2Ba 米gydF4y2Ba RgydF4y2Ba )gydF4y2Ba egydF4y2Ba −gydF4y2Ba jgydF4y2Ba 2gydF4y2Ba πgydF4y2Ba fgydF4y2Ba ngydF4y2Ba .gydF4y2Ba

  • 短时傅里叶变换是可逆的。反转过程重叠加窗段,以补偿窗口边缘的信号衰减。有关更多信息,请参见gydF4y2Ba短时间傅里叶反变换gydF4y2Ba.gydF4y2Ba

  • 的gydF4y2BaistftgydF4y2Ba函数反转信号的STFT。gydF4y2Ba

  • 在特定的环境下,有可能实现信号的“完美重建”。有关更多信息,请参见gydF4y2Ba完美的重建gydF4y2Ba.gydF4y2Ba

  • 的gydF4y2Bastftmag2siggydF4y2Ba返回从STFT的幅度重建的信号的估计值。gydF4y2Ba

完美的重建gydF4y2Ba

一般来说,计算输入信号的STFT并对其求逆不会得到完美的重构。如果要使ISTFT的输出与原始输入信号尽可能地匹配,信号与窗口必须满足以下条件:gydF4y2Ba

  • 输入大小-如果你对的输出求倒数gydF4y2BastftgydF4y2Ba使用gydF4y2BaistftgydF4y2Ba并希望结果与输入信号的长度相同gydF4y2BaxgydF4y2Ba的值。gydF4y2Ba

    kgydF4y2Ba =gydF4y2Ba NgydF4y2Ba xgydF4y2Ba −gydF4y2Ba lgydF4y2Ba 米gydF4y2Ba −gydF4y2Ba lgydF4y2Ba

    必须为整数。在方程中,gydF4y2BaNgydF4y2BaxgydF4y2Ba是信号的长度,gydF4y2Ba米gydF4y2Ba是窗户的长度,和gydF4y2BalgydF4y2Ba是重叠长度。gydF4y2Ba

  • COLA符合性-使用COLA符合性窗口,假设您没有修改信号的短时傅里叶变换。gydF4y2Ba

  • 填充-如果输入信号的长度等于gydF4y2BakgydF4y2Ba不是整数,在计算短时傅里叶变换之前对信号进行零垫。把信号反转后去掉多余的零。gydF4y2Ba

参考文献gydF4y2Ba

[1] Mitra, Sanjit K。gydF4y2Ba数字信号处理:基于计算机的方法gydF4y2Ba.第二版,纽约:麦格劳-希尔出版社,2001年。gydF4y2Ba

夏普,布鲁斯。gydF4y2Ba叠加处理的可逆性gydF4y2Ba.gydF4y2Bahttps://gauss256.github.io/blog/cola.htmlgydF4y2Ba,于2019年7月访问。gydF4y2Ba

史密斯,朱利叶斯·奥利翁。gydF4y2Ba频谱音频信号处理gydF4y2Ba.gydF4y2Bahttps://ccrma.stanford.edu/~jos/sasp/gydF4y2Ba,在线书籍,2011年版,2018年11月访问。gydF4y2Ba

扩展功能gydF4y2Ba

C/ c++代码生成gydF4y2Ba
使用MATLAB®Coder™生成C和c++代码。gydF4y2Ba

版本历史gydF4y2Ba

在R2019a中引入gydF4y2Ba