Matlab 如何改变由谱图函数生成的图的值范围

Matlab 如何改变由谱图函数生成的图的值范围,matlab,signal-processing,fft,wavelet,haar-wavelet,Matlab,Signal Processing,Fft,Wavelet,Haar Wavelet,在下面发布的图片中,我正在尝试使用STFT获取TFR。在发布的代码中,我指定了参数T=0.001:1;例如,当我将其修改为T=0.001:2时;尽管标为“频率”,但绘图水平轴上的值范围会发生变化 现在,我想更改所示绘图上水平轴和垂直轴的值范围。我该怎么做 注:用于生成所示绘图的代码为: T = 0:.001:1; spectrogram(x4,128,50,NFFT); 代码: 形象 新结果1 想法:获取用于绘制光谱图的轴,并相应地设置其属性。例如,假设要将x范围限制为[0,0.5],将y范围

在下面发布的图片中,我正在尝试使用STFT获取TFR。在发布的代码中,我指定了参数T=0.001:1;例如,当我将其修改为T=0.001:2时;尽管标为“频率”,但绘图水平轴上的值范围会发生变化

现在,我想更改所示绘图上水平轴和垂直轴的值范围。我该怎么做

注:用于生成所示绘图的代码为:

T = 0:.001:1;
spectrogram(x4,128,50,NFFT);
代码:

形象

新结果1 想法:获取用于绘制光谱图的轴,并相应地设置其属性。例如,假设要将x范围限制为[0,0.5],将y范围限制为[100200],则:

%'old code here'
%' . . . '
spectrogram(x4,128,50,NFFT);

%'new code here'
axis(get(gcf,'children'), [0, 0.5, 100, 200]);
说明:添加的一行程序从当前图形gcf中获取子句柄,gcf假定由spectrogram创建,然后通过axis调用将其范围设置为[xmin,xmax,ymin,ymax]

Nota Bene:我假设您只需要重新缩放轴,而不是重新计算不同数据的光谱图

另外,我假设光谱图与其他轴没有相同的图形


此外,扩展轴范围而不是限制它可能不会在一句话中给出预期的结果:很难看。

谢谢你的想法。请在应用您的建议后查看新发布的图片。1-为什么略早于1的水平轴上的间隔为白色?2-我如何读取此图?STFT是否正确表示?@rmaik 1-您介意分享您使用的范围修改代码吗?我不想猜测它,因为看它更简单。2-好吧,你读起来就像光谱图一样。:-图上x,y点的颜色给出了STFT在某个时刻y轴上计算的某个谐波x轴的功率。关于读取光谱图,从0到.25秒,我应该有一个峰值为30*.25的信号,因为它是30周/秒。但是在光谱图中,水平轴上0->0.25的范围在垂直轴上有许多相应的读数,就好像从0->0.25秒。有许多频率的信号。还有一件事,在我改变了axese的范围之后,正如你之前建议的,现在我想改变垂直轴的名称?我该怎么做please@rmaik对于光谱图读取部分:添加x1、x2、x3、x4,而不连接它们;你的信号只有四分之一秒而不是一秒。所以你在不同的时间没有不同的光谱,这在图中是可见的。我认为您最好清楚地说明代码的用途以及您在发布时希望得到的结果,这样我们就可以避免在评论中延长问答时间。@rmaik用于y轴标记y轴:并检查ylabelax,\uuuuuu。还可以查看格式化和注释帮助:@Schorsch我发布了代码如果我复制/粘贴了该代码,它会告诉我T没有被使用。更改T对绘图没有影响。请考虑清楚你的问题。0.967到1之间的白色条纹后面的问题是因为在你的代码中,你将第四的输入设置为31。但是,文档将其指定为FFT长度——在您的例子中是8192。@Schorsch ok,在我的代码中,我指定Y=fftx4,NFFT;在阅读了你的建议后,我将光谱图参数改为spectrogramx4,10,9,longer;但是现在当我运行matlab时,我不接受这个parameter@Schorsch好的,我解决了这个问题,我只是指定了不带长度的NFFT作为光谱图的第四个参数
%'old code here'
%' . . . '
spectrogram(x4,128,50,NFFT);

%'new code here'
axis(get(gcf,'children'), [0, 0.5, 100, 200]);