beefyy 发表于 2007-8-2 15:28

用imagesc函数画图,坐标轴的问题

我借鉴emd_fmsin.m里面的程序,画了个频率为20的余弦信号。用imagesc函数画图,频率并不显示在20处。
程序如下:
clc;
close all;
delt=1/100;      
t1=;
f=20;
x=cos(2*pi*f*t1);
t=1:120;
% time-frequency distributions
Nf = 128;% # of frequency bins
Nh = 31;% short-time window length
w = tftb_window(Nh,'Kaiser');
= tfrrsp(x',t,Nf,w,1);
figure(1)
imagesc((rs(1:64,:)))
% set(gca,'ytick',,'yticklabel',)
xlabel('time')
ylabel('frequency')
图为


若加上set(gca,'ytick',,'yticklabel',)此句命令,则会显示在频率20处,但是每换一个Nf就要把
)这部分进行重新计算,想请教大家,用imagesc函数画图时,坐标轴显示有什么可遵循的规则没??谢谢!

[ 本帖最后由 beefyy 于 2007-8-2 15:35 编辑 ]

songzy41 发表于 2007-8-2 17:06

1,没有找到 tftb_window函数,直接用window函数。
2,楼主的错误主要是:在x中设置信号的频率为20,而在作图时直接用rs,这时x轴是对应于坐组中的下标值(从1至64),而不是对应于频率。要计算出频率用到imagesc中,便能对应20了。
程序有:
delt=1/100;      
t1=;
f=20;
x=cos(2*pi*f*t1);
t=1:120;
% time-frequency distributions
Nf = 128;% # of frequency bins
Nh = 31;% short-time window length
w = window(Nh,'Kaiser');
= tfrrsp(x',t,Nf,w,1);
df=1/(delt*Nf);
ff=(0:63)*df;
figure(1)
imagesc(t,ff,rs(1:64,:))
% set(gca,'ytick',,'yticklabel',)
xlabel('time')
ylabel('frequency')
axis('xy')

beefyy 发表于 2007-8-3 09:58

谢谢songzy41!

zhaoyanju 发表于 2008-7-8 16:52

回复 2楼 的帖子

我也遇到这个问题,太感谢了,嘿嘿 网上高手如云啊

ruiye 发表于 2011-1-16 05:54

借鉴一下
页: [1]
查看完整版本: 用imagesc函数画图,坐标轴的问题