Chirp generation
4 views (last 30 days)
Show older comments
I would like to creat a customized chirp sequence where frequency is changing every half cycle and I do not know how to go about it.
1 Comment
Walter Roberson
on 11 Jan 2012
I do not see how the result could have the necessary properties to be called a "chirp" ?
Answers (1)
Dr. Seis
on 11 Jan 2012
As Walter says, this will not give you a true chirp signal. If you are aware of this and would still like to have a pseudo-chirp then you can take a look at the example below. I show the difference between trying to generate the type of chirp you are after and a real chirp signal. I also plot the derivative of the resulting signals, so I can highlight that between half cycles you will have a sometimes subtle (sometimes not so subtle) jump in gradient.
df = 0.1; % define frequency increment
f = 0.1 : df : 1; % define frequencies for "chip" signal
dt = 0.1; % define a dt for final timeseries
% Generate 1Hz cosine wave
nt = 0 : 1/360 : 1-1/360;
a = 1;
s = a*cosd(0 : 1 : 359);
% Initialize x & y
x = zeros(1,179*numel(f)+1);
y = a*ones(1,179*numel(f)+1);
end_time = 0;
for i = 1 : numel(f)
x((1:179) + (i-1)*179 + 1) = nt(2:180)/f(i) + end_time;
if mod(i,2) ~= 0
y((1:179) + (i-1)*179 + 1) = s(2:180);
else
y((1:179) + (i-1)*179 + 1) = s(182:360);
end
end_time = nt(180)/f(i) + end_time;
end
% x is irregular spacing
% we need to interpolate to a regular spacing
x_new = 0 : dt : x(end);
y_new = interp1(x,y,x_new,'spline')
y_chirp = chirp(x_new,f(1),x_new(end),f(end));
% Determine derivative/differential info
x_diff = x_new(2:end-1);
y_diff = arrayfun(@(n)(y_new(n+1)-y_new(n-1))/(2*dt),2:numel(x_new)-1);
y_cdiff = arrayfun(@(n)(y_chirp(n+1)-y_chirp(n-1))/(2*dt),2:numel(x_new)-1);
% plot results
figure;
subplot(2,1,1)
plot(x_new,y_new); hold on;
plot(x_new,y_chirp,'r-'); hold off;
legend('pseudo-chirp','real chirp');
subplot(2,1,2);
plot(x_diff,y_diff); hold on;
plot(x_diff,y_cdiff,'r-'); hold off;
legend('pseudo-chirp','real chirp');
0 Comments
See Also
Categories
Find more on Waveform Generation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!