加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

matlab产生扫频余弦信号

(2011-04-07 19:06:30)
标签:

扫频

短时傅里叶变换

f1

信号

采样率

分类: Matlab

记得曾经大研做录音放音程序,老大让我编一个扫频信号做输入,还给了个英文的扫频信号说明,晕晕乎乎做了半天。。。突然发现matlab有产生扫频信号的函数的,一听扫频就感觉好亲切啊,这个肯定要收藏了。

这个网址有介绍http://blog.csdn.net/skyujwang/archive/2011/03/03/6221201.aspx,我不妨翻译一下matlab帮助吧。

chirp:产生余弦扫频信号

y = chirp(t,f0,t1,f1,’method’,phi,'shape')

根据指定的方法在时间t上产生余弦扫频信号,f0为第一时刻的瞬时频率,f1为t1时刻的瞬时频率,f0和f1单位都为Hz。如果未指定,f0默认为e-6(对数扫频方法)或0(其他扫频方法),t1为1,f1为100Hz。

扫频方法有linear线性扫频、quadratic二次扫频、logarithmic对数扫频;

phi允许指定一个初始相位(以°为单位),默认为0,如果想忽略此参数,直接设置后面的参数,可以指定为0或[];

shape指定二次扫频方法的抛物线的形状,凹还是凸,值为concave或convex,如果此信号被忽略,则根据f0和f1的相对大小决定是凹还是凸。

 

例如,线性扫频

t = 0:0.001:2;            % 2 secs @ 1kHz sample rate
y = chirp(t,0,1,150);     % Start @ DC, 
                          %   cross 150Hz at t=1 sec
spectrogram(y,256,250,256,1E3,'yaxis') 

untitled

 

二次扫频

% ±2 secs @ 1kHz sample rate
t = -2:0.001:2;    

% Start @ 100Hz, cross 200Hz at t=1 sec 
y = chirp(t,100,1,200,'quadratic'); 

spectrogram(y,128,120,128,1E3,'yaxis') 
2
指数扫频
t = 0:0.001:10;      % 10 seconds @ 1kHz sample rate
fo = 10; f1 = 400;   % Start at 10Hz, go up to 400Hz
y = chirp(t,fo,10,f1,'logarithmic');
spectrogram(y,256,200,256,1000,'yaxis')
3
 
spectrogram或specgram为用短时傅里叶变换计算信号的时频谱,

specgram(a,nfft,fs,window,numoverlap)
nfft是fft的长度,越长的话,频域分辨率越高,但是,对于语音这种时变信号,不能过长,一般采样率16k或者8k的取1024或者512,要看采样率的高低;
fs就是采样率;
window是指窗的长度,一般和nfft相同即可;
numoverlap是指nfft减去步长,越大越好,但运算量越大。一般取nfft的3/4效果就比较好了。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有