时频分析时imagesc的问题
我的目的是研究随时间变化,以及频率变化时,信号的变化。手段是傅立叶变换后,做时频分析,横坐标是时间,纵坐标是频率,第三维显示的值是傅立叶变换后的幅值。具体程序如下:t=0:.0001:.0255; x1=sin(2*pi*80*t); x2= 0.8*exp(-(t-0.01875).^2*1000000).*sin(2*pi*1600*t);
signal=x1+x2; fs=10000;
%傅立叶变换
fftsignal=fft(signal); N=length(signal); f=(0:N-1)*fs/N;
Mag=2*abs(fftsignal)/N; pyy=Mag.^2;
=instfreq(fftsignal');%求信号的瞬时频率
frequency=frenor*fs;%真实频率是归一化频率乘以采样频率fs
imagesc(t,frequency,pyy); xlabel('Time'); ylabel('Frequency');
axis('xy'); colormap jet; caxis();
h=colorbar; set(h,'Ylim',);
得到的图像的问题在于:
1.frequency的理论范围在0-5000之间,图像上只能显示出0-4000部分。
2.pyy值,即傅立叶变换后的幅值在0-1之间取值,根据色条的范围设置,应该是有不同颜色存在的,但是图像上显示的都是蓝色值。
请高手帮忙解决。谢谢!
[ 本帖最后由 ChaChing 于 2010-8-15 14:19 编辑 ] 不知道是不是我描述的有问题,为什么没有回复呢?请帮帮忙吧,知道这样发帖会被扣分,但是真的很着急。这个问题困扰了很久了,请大家帮忙。如果觉得我有没有描述清楚的地方,我可以再描述的更清楚一些。 LZ用imagesc(t,frequency,pyy);是时频图吗?
其中pyy仅有一条频谱, 也就是仅对应一个时间!
个人水平专业有限, 有关时频分析建议楼主
看看这里有没有你要问的问题--信号处理专栏话题索引
http://forum.vibunion.com/forum/thread-49413-1-1.html 谢谢ChaChing!我做的是时频图。其实我想得到的结果应该是平行于时间轴的pyy值,也就是在对应于某一频率,随时间变换的幅值。但是结果正好相反。而且还存在我前面提到的问题。我觉得可能是我使用命令出现的问题。能帮忙解决吗 help spectrogram? 目前正在试spectrogram,但是有两个疑问:
1.spectrogram通常用在语谱分析上,其他信号也可以用吗?
2.spectrogram图中的时间轴显示的数值如何与真实的时间相对应? 回复 wanra 的帖子
1,应该可以吧! 但非专业, 不确定
2.轴显示的时间应该是每一block的中点时间
= spectrogram(...) returns a vector of frequencies F and a vector of times T at which the spectrogram is computed. The length of F is equal to the number of rows of S. The length of T is equal to k, as defined above and each value corresponds to the center of each segment.
如您所说是每一段的中点时间,这个每一段指的是每一window的段吗?有没有什么方法能把时间显示成真实的时间? 回复 wanra 的帖子
这个每一段指的是每一window的段吗?
Yes
有没有什么方法能把时间显示成真实的时间?
这个时间不能算真实的时间吗?
页:
[1]