首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以调整频谱图的频率轴吗?

我可以调整频谱图的频率轴吗?
EN

Stack Overflow用户
提问于 2012-10-10 04:45:46
回答 2查看 11.3K关注 0票数 5

MATLAB documentation examples for the spectrogram function给出了将频率轴设置为[0 500]的示例。我能把它改成像[0 100]这样的东西吗?显然,运行axis命令将为我做这件事,但这会调整最终结果并“放大”结果图,使其像素化。我主要是希望建立一个频谱图,只寻找0-100之间的频率,而不是在建立频谱图后重新缩放。

下面是文档中示例:

代码语言:javascript
复制
T = 0:0.001:2;
X = chirp(T,0,1,150);
spectrogram(X,256,250,256,1E3,'yaxis');

这会产生以下结果:

低于350赫兹的所有东西都是不需要的。有没有办法在构建光谱图时不包括350到500之间的所有内容,而不是在事后调整轴?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-10 04:49:03

从文档中:

S,F,T=语谱图(x,窗口,无重叠,F)使用频率向量F(以Hz为单位)。F必须是至少包含两个元素的向量。本例使用Goertzel算法在F中的频率上计算频谱图。指定的频率被四舍五入到与信号分辨率相称的最近的DFT bin。在使用nfft或nfft的默认值的所有其他语法情况下,使用短时傅立叶变换。返回的F向量是四舍五入频率的向量。T是计算频谱图的时间矢量。F的长度等于S的行数。T的长度等于k,如上所述,并且每个值对应于每个段的中心。

这对你有帮助吗?

票数 7
EN

Stack Overflow用户

发布于 2015-05-30 00:38:24

FFT速度如此之快,因此最好提高分辨率,然后直接丢弃不需要的数据。如果你需要更好的频谱分辨率(更多的频段),那么增加FFT的大小。为了在时间维度上获得更平滑的频谱,请增加noverlap值以减少每个结果FFT的增量。在这种情况下,您不会指定F。如果FFT大小为1024,则会得到1024/2+1个频率段。

代码语言:javascript
复制
FFTN = 512;
start = 512*(350/500); % Only care about freq bins above this value
WIN_SIZE = FFTN;
overlap = floor(FFTN*0.8);
[~,F,T,P] = spectrogram(y, WIN_SIZE, overlap, FFTN);
f = 0:(length(F)-1);
f = f*((Fs/2)/length(F));
P = P(start:512,:);
f = f(1,start:512);
imagesc(T,f,10*log10(P),[-70 20]); 
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12808147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档