function fourier2130folding

% Hensikten med dette programmet er å vise hvordan folding arter seg ved
% diskret Fourier transform, nemlig at man ikke kan skille mellom en
% frekvens og speilfrekvensen (lik maks frekvens minus den aktuelle
% frekvensen). Dette fører til at vi ikke kan få sikker frekvensimformasjon
% med mindre vi VET at virkelig signal ikke inneholder frekvenskomponenter
% som er større enn maks frekvens dividert på to. 
% Max frekvens er gitt ut fra antall punkter N i digitaliseringen dividert på
% den totale tiden T digitaliseringen gikk over. 
% Det kan være lurt å studere samspillet mellom N, T og delta_t og delta_f
% sammen med fmax (maks frekvens).

% Gangen i programmet er at vi først velger å generere et tidsavhengig 
% signal som er en ren cosinus med en gitt frekvens fn (har valgt tilfeldig 
% en frekens lik 48 ganger oppløsningen i frekvens). Men denne funksjonen
% samples bare i 512 tidspunkt i løpet av de 5 sek samplingen foregår. 
% Denne første tidsrekken kaller vi g1.
% Vi gjør nå akkurat det samme, men nå for et signal med mye høyere 
% frekvens, nemlig den maksimale frekvensen fourier-omvendingen gir minus
% den signalfrekvensen fn nevnt ovenfor. Vi kaller denne nye, høye frekvensen
% for "speilfrekvensen" (foldet frekvens) (uttrykk som du forhåpentligvis 
% vil forstå når du leser av toppene i frekvensdiagrammene som fremkommer).
% De samplede verdiene ved speilfrekvensen kaller vi g2.
% Det lages så et plot som viser de samplede verdiene både for signalet med 
% signalfrekvensen fn (ved sorte punkter) og for et tenkt signal med 
% speilfrekvensen (ved blå punkter).
% Du vil finne at disse to settene med punktene ligger oppå hverandre!
% Det er pussig siden de to frekvensene er så forskjellige som de er 
% (skrives ut på skjermen).

% I siste del av programmet plottes så en kurve med den opprinnelige
% frekvensen sammen med speilfrekvensen, men nå med mye større (20X)
% oppløsning i tid enn det samplingen tilsvarte. DA ser vi klar forskjell
% mellom frekvens og speilfrekvens, men vi ser også at dersom vi nå faktisk
% bare foretar målinger ved akkurat de tidspunktene hvor vi har markert
% punkter på den blå og sorte kurven, så faller måleverdiene sammen (her
% krysser de to sinuskurvene hverandre).

% For å se noe som helst i plottet må man zoome inn svært mye i x-retningen
% på plottene (klikk på + knappen over figuren og lag et smalt utsnitt i
% x-retningen.) Alternativt kan man koble inn xlim-linjen i programmet for
% å få et lite utsnitt helt fra starten av (fjerne prosenttegnet foran).
% Jeg har med vilje ikke gjort dette i utgangspunktet for da kunne man 
% forledes til å tro at utsnittet var HELE beskrivelsen av de
% tidsavhengige funksjonene, og det er de jo slett ikke.

% Programmet er skrevet for bruk i FYS2130 våren 2008 av Arnt Inge Vistnes

N = 512;
T = 5.0; % 5 sek
delta_t = T/(N-1);
t = linspace(0,T*(N-1)/N,N);
f = zeros(1,N);
delta_f = N/((N-1)*T);
fmax = N/T  % Skriver ut max frekvens


fn = 48*delta_f % velger en vilkårlig frekvens i frekvensrekken
%tk = 39*delta_t; % vilkårlig tidspunkt i tidsrekken
fmax_n = fmax - fn  % speilfrekvensen

% I de neste to linjene velges enten begge sin eller begge cos
g1 = cos(2*pi*fn*t);
g2 = cos(2*pi*(fmax-fn)*t);    % Må velge minus dersom sin

% Plotter opprinnelig funksjon (samplede punkter)
plot(t,g1,'.-k','MarkerSize',20);
hold on;
plot(t,g2,'.-b','MarkerSize',20);
%xlim([-0.01,0.2]);
ylim([-1.2,1.2]);
title('Samplede punkter fra tidssignal med signalfrekvens (sort) og speilfrekvens (blå)');
%figure;

% Vil nå plotte mellomliggende punkter i de to sin/cos funksjonene
% Velger 20x så tett med punkter sammenlignet med virkelig samplede verdier
N = 20*N;
T = 5.0; % 5 sek
delta_t = T/(N-1);
t2 = linspace(0,T*(N-1)/N,N);

% I de neste to linjene velges enten begge sin eller begge cos
g3 = cos(2*pi*fn*t2);
g4 = cos(2*pi*(fmax-fn)*t2);  % Må velge minus dersom sin

% Plotter den underliggende funksjon (med finere oppløsning enn i
% virkeligheten, s)
plot(t2,g3,'-r');
hold on;
plot(t2,g4,'-r');
title('Opprinnelige punkter + frekvens og speilfrekvens i fin oppløsning');

