matlab 角度余弦,matlab产生扫频余弦信号

记得曾经大研做录音放音程序,老大让我编一个扫频信号做输入,还给了个英文的扫频信号说明,晕晕乎乎做了半天。。。突然发现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')

a4c26d1e5885305701be709a3d33442f.png

二次扫频

% ±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')

a4c26d1e5885305701be709a3d33442f.png

指数扫频

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')

a4c26d1e5885305701be709a3d33442f.png

spectrogram或specgram为用短时傅里叶变换计算信号的时频谱,

specgram(a,nfft,fs,window,numoverlap)

nfft是fft的长度,越长的话,频域分辨率越高,但是,对于语音这种时变信号,不能过长,一般采样率16k或者8k的取1024或者512,要看采样率的高低;

fs就是采样率;

window是指窗的长度,一般和nfft相同即可;

numoverlap是指nfft减去步长,越大越好,但运算量越大。一般取nfft的3/4效果就比较好了。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值