# Plot a sine wave with decreasing frequency over time

35 views (last 30 days)

Show older comments

Hi! I'm trying to plot a sine wave whose frequency decreases linearly over time (amplitude stays the same). This is my code:

clear all;

close all;

clc

period = 0.08;

for x = 0:4/1000:2

a = 5;

b = ((2*pi)/(period + 0.001));

c = 300;

d = 30;

c = c * -1;

output = a.*sin(b.*(x+c))+d;

plot(x, output, 'Linewidth', 2);

end

When I run the code, my plot is blank. I know Matlab doesn't require the use of a "for" loop when plotting sinusoids, however I'm unsure of how else I can modify the frequency over time if I don't use a "for" loop. Any help is much appreciated!

##### 0 Comments

### Answers (3)

Eike Blechschmidt
on 4 Aug 2021

How about

f_upper = 50;

f_lower = 10;

t = 0:0.01:10;

f = linspace(f_upper, f_lower, numel(t));

a = 10;

x = a * sin(2*pi*f.*t);

plot(t,x)

##### 1 Comment

darova
on 4 Aug 2021

Modify x coordinate

x = 0:.1:30;

y = sin(x);

x1 = x - 10*(x/max(x)).^2; % shift last point 10 units

plot(x1,y)

##### 5 Comments

Eike Blechschmidt
on 9 Aug 2021

Eike Blechschmidt
on 5 Aug 2021

The easiest and correct is probably to use:

f1 = 50;

f2 = 10;

t = 0:0.001:10;

y = chirp(t,f1,t(end),f2);

plot(t, y);

##### 3 Comments

Eike Blechschmidt
on 6 Aug 2021

You can also do

edit chirp

and scroll downt to

function yvalue = calculateChirp(f0,f1,t1,p,t,phi,isComplex)

It shows quite clear how the chirp is calculated.

### See Also

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!