%%function svevning

clear all;

pi = 3.141592654;
%Lydhastighet m/s
v = 340;
%Frekvenser Hz
f1 = 440.0;
f2 = 430.0;
% Vinkelfrekvenser (1/s):
w1 = f1*2*pi;
w2 = f2*2*pi;
deltaw = w1-w2;
w = (w1+w2)/2;
% Bolgetall (1/m):
k1 = w1/v;
k2 = w2/v;
deltak = k1-k2;
k = (k1+k2)/2;
% Amplituder:
A1 = 1.0;
A2 = A1;
% Antall punkter langs x-aksen:
N = 800;
% Antall tidssteg:
M = 100;
% Tabeller for x- og y-verdier, begge med N elementer.
% Velger x-intervallet slik at...?
kmin = min(k1,k2);
xmax = 2*pi/deltak;
ymax = 5;
x = linspace(0,xmax,N);
y = linspace(0,ymax,N);
% Animasjon av svevning:
p = plot(x,y,'-','LineWidth',2.0,'EraseMode','xor'); 
axis([0 xmax 0 ymax])
hold on
xlabel('posisjon (m)');
ylabel('intensitet');
title('Svevning');
for i=1:M
    teller = i
    % Velger tidssteg slik at animasjonen varer i 10 hele perioder:
    t = i*10*2*pi/(deltaw*M);
    %
    for j = 1:N
        y(j) = (1.0+cos(deltak*x(j)-deltaw*t))*(1+cos(k*x(j)-w*t));
    end;
    set(p,'XData',x,'YData',y) 
    % MATLAB help: drawnow flushes the event queue and updates the figure window
    drawnow    
    pause(0.2);  % Forsinker framvisningen i 0.1 s (juster hvis nodvendig)
end
