chirp:产生余弦扫频信号
matlab帮助文档里的描述用法有:
y=chirp(t,f0,t1,f1)
在t的时间范围内,从f0扫频到f1,指定t1时要扫到f1。 所以,通过t1的位置,扫频速率就被规定下来了。
y =chirp(t,f0,t1,f1,’method’,phi,‘shape’)
扫频方法有linear线性扫频、quadratic二次扫频、logarithmic对数扫频;
phi允许指定一个初始相位(以°为单位),默认为0,如果想忽略此参数,直接设置后面的参数,可以指定为0或[];
shape指定二次扫频方法的抛物线的形状,凹还是凸,值为concave或convex,如果此信号被忽略,则根据f0和f1的相对大小决定是凹还是凸。
fs=1000;
t=1/fs:1/fs:2;%共2000个时刻
x1=chirp(t,0,0.5,100);
x2=chirp(t,0,1,100);
x3=chirp(t,0,4,100);
figure;
subplot(311);plot(x1);
subplot(312);plot(x2);
subplot(313);plot(x3);
figure;
subplot(311);x1_fft=fft(x1);plot(abs(x1_fft));
subplot(312);x2_fft=fft(x2);plot(abs(x2_fft));
subplot(313);x3_fft=fft(x3);plot(abs(x3_fft));
图一,如果规定在0.5秒就扫到了100Hz,后面的1.5秒就再升300Hz,实际在2秒的时候,频率已经是400Hz了
%信号产生时间总长为0.5秒,进行扫频,在0.5秒扫到100Hz
t_=1/fs:1/fs:0.5;
x1_=chirp(t,0,0.5,100);
for temp=1:length(t_)
chazhi_(temp)=x1(temp)-x1_(temp);
end
figure;
plot(chazhi_);%与x1产生的0.5秒之前的信号进行比较,的确是一模一样的
%那x1之后的是怎么回事呢
%线性的斜率的话,0.5秒是到达了100Hz,2秒的时候应该是到了400Hz,验证一下
x1__=chirp(t,0,2,400);
figure;
subplot(411);plot(x1);
subplot(412);plot(x1__);
subplot(413);plot(abs(x1_fft));
subplot(414);x1__fft=fft(x1__);plot(abs(x1__fft));