Då har vi kommit fram till signaler! Signaler kan i praktiken vara lite allt möjligt som t.ex. ljud, elektrisk ström, dataströmmar, mm. Men ur ett matematiskt perspektiv är en signal ingenting annat än en funktion som beror av tid, eller någon annan variabel. Om detta sedan är en funktion som beskriver ljudstyrka eller antalet prickar på en vägg struntar vi i. Vi kan räkna på dem på samma sätt oavsett om det gäller prickar eller ljud.


Diskreta och kontinuerliga signaler

Man kan säga att det finns två grundtyper av signaler, kontinuerliga och diskreta. Vad menar man då med detta? Jo, en signal kallas kontinuerlig om den är beroende av en kontinuerlig variabel. Denna variabel är oftast tid, men inte nödvändigtvis. Om funktionen istället har en diskret variabel kallar man den för en diskret signal. Denna diskreta variabel är ofta, men inte alltid, heltal. Det där var ju logiskt och bra, nu ska vi bara reda ut vad som menas med kontinuerliga och diskreta variabler.

Att en variabel är kontinuerlig innebär att den har ett oändligt antal värden även om det bara är definierad i ett visst intervall. Om vi t.ex. betecknar tiden mellan kl 14:00 och 15:00 med variabeln t så har den ett oändligt antal möjliga värden i intervallet 14<t<1514 < t < 15. Variabeln t kan då t.ex. anta värdet 14.614.6, men den kan också anta värdet 14.600000000114.6000000001. Det finns helt enkelt ingen gräns för hur många värden t kan anta, även om intervallet är begränsat.

Här kan du se ett exempel på en kontinuerlig funktion, f(t)=2tf(t)=2t

Figur 1

En diskret variabel däremot har bara ett visst antal värden den kan anta och en diskret funktion är bara definierad för dessa möjliga värden. Om vi t.ex. betecknar alla heltal med variabeln n så kommer en funktion f[n]f[n] vara definierad, alltså ha ett värde, i punkten f[2]f[2] men vara odefinierad, sakna värde, i punkten f[2.5]f[2.5]. För att förtydliga att en variabel är diskret brukar man omge den med hakparentes, som t.ex. [n], istället för vanlig parentes, som (t).

Här nedan ser du ett exempel på en diskret funktion, f[n]=2nf[n]=2 n

Figur 2

Kryssfråga 1: Är signalen på bilden nedan diskret eller kontinuerlig?

  • a) Diskret
  • b) Kontinuerlig

Rätt svar!

Fel svar!

Figur 3

Det är möjligt, och rentav vanligt att approximera en kontinuerlig signal med en diskret. Om man har väldigt små steg mellan värdena i den diskreta approximationen, t.ex. n=0.000001;0.000002;0.000003n={0.000001 ; 0.000002 ; 0.000003}, kan man rentav få en ganska bra approximation. I praktiken är detta faktiskt precis vad man gör när man hanterar kontinuerliga signaler med datorer. En dator kan egentligen inte hantera kontinuerliga signaler men den kan approximera dem med diskreta signaler med väldigt små steg mellan värdena, vilket oftast är gott nog.

Figur 4: En kontinuerlig signal f(t)=sin(2t)f(t) = \sin(2 t) och dess diskreta approximation.


Periodiska Signaler

En periodisk signal är precis som det låter, en signal som upprepar sig efter ett visst tidsintervall, som kallas signalens period. Motsatsen till detta kallas för en aperiodisk signal. En signal kan vara aperiodisk om till exempel intervallet mellan varje upprepning minskar eller om det aldrig upprepas alls.

Lite mer formellt definieras en periodisk signal så här:

f(t)=f(t+T)f(t) = f(t+T), för alla värden på t, där T är perioden

Här ser du t.ex. en periodisk signal f(t)=2 \sin(3 t), som har perioden T=\frac{2\pi}{3}. Notera att f(t)=f(t+T) är sant, avsett vilken punkt t du tittar på.

Figur 5: Här ser du t.ex. en periodisk signal f(t)=2sin(3t)f(t)=2 \sin(3 t), som har perioden T=2π3T=\frac{2\pi}{3}. Notera att f(t)=f(t+T)f(t)=f(t+T) är sant, avsett vilken punkt t du tittar på.

Övning 1: Här har du en nästan färdig funktion som undersöker om en signal har en viss period. Fyll i det som ska stå i parentesen.

contHasPeriod :: ContTimeFun ->
                 ContTime -> Double -> Bool
contHasPeriod signal step period =
        and $ map (...) [0, step .. period]
    where hasPeriod signal period t =
            signal t ~= signal (t+period)
contHasPeriod :: ContTimeFun -> ContTime ->
                                        Double -> Bool
contHasPeriod signal step period =
        and $ map (hasPeriod signal period)
                                [0, step .. period]
    where hasPeriod signal period t =
                            signal t ~= signal (t+period)
Kryssfråga 2: I bilden nedan ser du en funktion, f(t)=0.5sin(2t)f(t)=0.5\sin(2t). Vad har den för period?

  • a) π\pi
  • b) 2 π\pi
  • c) 2

Rätt svar!

Fel svar!

funktionen f(t) = 0.5 \sin(2t)

Figur 6: Funktionen f(t)=0.5sin(2t)f(t) = 0.5 \sin(2t)

Kryssfråga 3: Här nedan ser vi en annan funktion, f(t)=3 cos(0.25t)f(t)=3cos(0.25t). Vad har den för period?
  • a) 14π\frac{1}{4}\pi
  • b) 8π8\pi
  • c) 3π3\pi

Rätt svar!

Fel svar!

Figur 7

Vad har man då för nytta av att kunna avgöra om en signal är periodisk? Jo, en periodisk signal kan utvecklas till en Fourierserie. Mer om detta i avsnitt 3.


Udda och Jämna Signaler

Eftersom signaler kan betraktas som matematiska funktioner kan vi säga att vi har udda och jämna signaler, precis som vi har jämna och udda funktioner. En funktion kan vara jämn, udda eller inget utav dem.

En funktion f är jämn om f(x)f(x) är samma som f(−x)f(-x). I den vänstra bilden här nedan ser du ett exempel på en jämn funktion, f(x)=cos(x)f(x)=\cos(x). Notera att vilken punkt du än tittar på i figur 8a här nedan så gäller alltid f(x)=f(−x)f(x) = f(-x).

En funktion f är udda om f(−x)f(-x) är samma som −f(x)-f(x). I den högra bilden nedan ser du ett exempel på en udda funktion , f(x)=sin(x)f(x)=sin(x). Notera att vilken punkt du än tittar på i figur 8b här nedan så gäller alltid f(−x)=−f(x)f(-x) = -f(x).

8a

(a) Jämn funktion

8b

(b) Udda funktion

Figur 8

Alltså:

Jämn funktion:

f(x)=f(−x) f(x)=f(-x)

Udda funktion:

f(−x)=−f(x)f(-x)=-f(x)

Varför är det då bra att veta om en signal är jämn eller udda? Mer om det kommer i avsnittet om Fourierserier!

Kryssfråga 4: Är funktionen f(t)=0.5sin(2t)f(t)=0.5\sin(2t) här nedan jämn, udda eller ingetdera?
  • a) Jämn
  • b) Udda
  • c) Ingetdera

Rätt svar!

Fel svar!

funktionen f(t) = 0.5 \sin(2t)

Figur 9: Funktionen f(t)=0.5sin(2t)f(t) = 0.5 \sin(2t)

Kryssfråga 5: Är funktionen f(t)=3cos(0.25t)f(t)=3\cos(0.25t) här nedan jämn, udda eller ingetdera?
  • a) Jämn
  • b) Udda
  • c) Ingetdera

Rätt svar!

Fel svar!

Figur 10

Då ska vi se hur man kan implementera det här! En funktion som avgör om en signal är udda kan se ut så här:

contIsOdd :: ContTimeFun -> ContTime -> Double -> Bool
contIsOdd signal step limit = and $ map testPair $ zip xs ys
    where testPair (a,b) = a ~= (-b)
          xs = map signal [0, step .. limit]
          ys = map signal [0,-step .. (-limit)]

Övning 2: Implementera motsvarande funktion som undersöker om en signal är jämn.

contIsEven :: ContTimeFun -> ContTime -> Double -> Bool
contIsEven signal step limit = and $ map testPair $ zip xs ys
    where testPair (a,b) = a ~= b
          xs = map signal [0, step .. limit]
          ys = map signal [0,-step .. (-limit)]

Test: Lös de två nedanstående uppgifter och kontrollera sedan svaret med hjälp av programmet.

Test 1: En signal har funktionen: 3*sin(6t)3*\sin(6t)

Vad är signalens period?

  • a) π3\frac{\pi}{3}j
  • b) 3π3*pi
  • c) 6π6/pi

Är signalen udda eller jämn?

  • a) Udda!
  • b) Jämn!

Rätt svar!

Fel svar!

Test 2: En signal har funktionen: 12cos(t)\frac{1}{2} \cos(t)

Vad är signalens period?

  • a) π4pi/4
  • b) πpi
  • c) 2π2*pi

Är signalen udda eller jämn?

  • a) Udda!
  • b) Jämn!

Rätt svar!

Fel svar!

Testa gärna fler signaler!


Enhetsimpulser

En enhetsimpuls ser ut så här:

Figur 11

En enhetsimpuls kallas också för en dirac delta funktion och är i det diskreta fallet definierad som: δ[n]={1,n=00,otherwise,n∈ℤ\delta[n]= \begin{cases} 1,\quad n = 0 \\ 0, \quad otherwise \end{cases}, n \in \mathbb{Z} Och i det kontinuerliga fallet är den definierad som:

∫−∞∞δ(t)dt=1\int_{-\infty}^{\infty} \delta(t) dt = 1 där $$\delta(t)= \begin{cases} "\infty",\quad t = 0 \\ 0, \quad otherwise \end{cases}, t\in \mathbb{R}$$

Det vill säga, den är oändligt hög och oändligt smal då argumentet, t.ex. t, är 0 och annars tar den värdet 0.

∫−∞∞δ(t−τ)f(t)dt=f(τ)\int_{-\infty}^{\infty} \delta(t-\tau) f(t) dt = f(\tau)

Med andra ord, integralen av dessa blir värdet av integranden då enhetsimpulsen antar värdet 1.

I praktiken kan en signal egentligen inte bestå av en riktig enhetsimpuls, då en matematisk korrekt enhetsimpuls bara är definierad inuti en integral Men, precis som med mycket annat, kan man approximera en enhetsimpuls med något som är nära nog en riktig enhetsimpuls.

Övning 3: Här får du ett kodskelett till en definition av en diskret enhetsimpuls med DSL. Fyll i det som saknas.

discImpulse :: DiscTimeFun
discImpulse n | ...
              | otherwise = ...
discImpulse :: DiscTimeFun
discImpulse n | n == 0 = 1
              | otherwise = 0

Enhetssteg

Ett enhetssteg ser ut så här:

Figur 12

En enhetsstegsfunktion kallas även för en heavyside function och är i det diskreta fallet definierad som: u[t]={0,n<01,n≥0u[t] = \begin{cases} 0, \quad n < 0 \\ 1, \quad n \geq 0 \end{cases}

Och i det kontinuerliga fallet definierad som: u(t)={0,t<01,t≥0u(t) = \begin{cases} 0, \quad t < 0 \\ 1, \quad t \geq 0 \end{cases} Det vill säga om tiden eller argumentet inuti funktionen är större eller lika med noll, antar funktionen u(t)u(t) värdet 1, annars är den 0. Denna uppkommer oftast multiplicerad med en annan funktion som u(t−τ)f(t)u(t-\tau) f(t). Det kan då tolkas som att f(t)f(t) finns efter en tidpunkt t=τt = \tau.

Figur 13: Ett tidskiftad kontinuerlig enhetsteg med τ=2\tau = 2.

Övning 4: Här får du ett kodskelett till en definition av ett diskret enhetssteg med DSL. Fyll i det som saknas.

discStep :: DiscTimeFun
discStep n | ...
           | ...
discStep :: DiscTimeFun
discStep n | n < 0 = 0
           | otherwise = 1

Sammanfattning

Gratulerar! Du har nu lärt dig följande:

  • Vad diskreta och kontinuerliga signaler är.

  • Vad periodiska signaler är.

  • Vad udda och jämna signaler är.

  • Hur man implementerar funktioner för jämna och udda funktioner med DSL.

  • Vad enhetssteg och enhetsimpulser är.

  • Hur man implementerar diskreta enhetssteg och enhetsimpulser med DSL.

Bilderna i detta kapitel är gjorda i:

  • MATLAB: Figur 4, 11, 12 och 13

  • FOOPLOT: Figur 1, 2, 3, 5, 6, 7, 8, 9 och 10

Facit till frågorna
Komplexa tal LTI-system