MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

linear chirp signal generation ?

Asked by Aniket on 5 Feb 2013

hello i don't want to use chirp inbuilt function and i have written a code for chirp. could any one tell me is the code is correct ? i have simulate it and getting plot but at instantaneous time t1, I am not getting frequency change.

i have written a code according to equation of chirp signal generation.

please tell me this is correct ?

*****************************************

f1 =10;

f2 = 50 ;

t =0:0.001:20;

t1 = 10;

alpha = (f2-f1)/t1;

f= (alpha)*t + f1;

xx =1*cos(f);

plot (t,xx);

**********************************************

Products

No products are associated with this question.

Answer by Youssef KHMOU on 5 Feb 2013
Edited by Youssef KHMOU on 5 Feb 2013

hi, try this :

``` Fs=1000; % sample rate
tf=2; % 2 seconds
t=0:1/Fs:tf-1/Fs;
f1=100;
f2=400; % start @ 100 Hz, go up to 400Hz
semi_t=0:1/Fs:(tf/2-1/Fs);
sl=2*(f2-f1/2);
f1=f1*semi_t+(sl.*semi_t/2);
f2=f1(end)+f2*semi_t-sl.*semi_t/2;
f=[f1 f2];
y=1.33*cos(2*pi*f.*t);
plot(t,y)```

To check the Amplitude spectrum (100Hz,400Hz), try my submission : http://www.mathworks.com/matlabcentral/fileexchange/40002-psd-power-spectral-density-and-amplitude-spectrum-with-adjusted-fft

Youssef KHMOU on 7 Feb 2013

hi, consider the slope as :

``` K=f2-f1/2 ;
then :```
` f1=f1*semi_t+(K*semi_t);`
` f2=f1(end)+f2*semi_t-(K*semi_t);`

We added "f(end)" to have continuity in the frequency , to test do this :

```f1=f1*semi_t+(K*semi_t);
```
```f2=f2*semi_t-(K*semi_t);
```
```f=[f1 f2]; plot(t,f)
```
vamsi on 23 Aug 2013

hi youssef i execuded the code but the output is not comming for fs=500e6,f1=160e6 ,f2=170e6 ,t=5e-6 could u please explain that...

Youssef KHMOU on 24 Aug 2013

hi vamsi,

Your parameters do not fit the last example because of scaling problem; the frequency continues to increase or cant reach the final value f2 . To overcome this issue, consider the frequency as function F=at+constant that when time ends F=f2 and when time starts F=f1 :

```Fs=500e6;
f=5e-6;
t=0:1/Fs:tf-1/Fs;
f1=160e6 ;
f2=170e6;
SLOPE=(f2-f1)./t(end);
F=f1+SLOPE*t;
y=1.33*cos(2*pi*F.*t);
plot(t,y)
fy=fft(y);
Freq=(0:length(t)-1)*Fs/length(t);
figure, plot(Freq(1:end/2),abs(fy(1:end/2)))
```

Have you ever used the function chirp(t,f0,t1,f1) ?

Answer by Honglei Chen on 5 Feb 2013

It should be

```cos(2*pi*f.*t)
```

```cos(f)