Avatar billede general_custer Nybegynder
13. juni 2009 - 16:26 Der er 1 kommentar

Interpolation af signal

Det er efterhånden lang tid siden at jeg har haft signal behandling og kan derfor godt bruge noget hjælp fra nogle eksperter.

Jeg har et signal (der viser tyngdeaccelerationen imens en person går). Sensoren som har indsamlet signalet, samler omkring 100 målinger i sekundet. Dette svinger dog lidt, og jeg skal derfor have benyttet noget interpolation således at jeg ender med målinger med identisk tidsinterval.

For hver eneste måling har jeg et tidsstempel (som er præcist) og en acceleration. Et eksempel på dette kan ses herunder:

Tid        Acc
1        -1.42
10        -1.22
18        -0.56
28        0.43
37        1.26
49        1.56
56        1.85
69        1.02

Som det kan ses er der ca. 10 tidsenheder mellem hver måling, men ikke præcist. Det jeg gerne vil når frem til er et signal hvor der er præcis 10 tidsenheder mellem hver måling, og hvor approksimeringen bliver gjort med lineær interpolation.

Hvis det er muligt vil jeg da gerne have et programmeringseksempel, men en metode/formel kan bestemt også bruges.

På forhånd tak for hjælpen.
Avatar billede tjacob Juniormester
22. juni 2009 - 01:21 #1
Her er et hurtigt forslag i VB.NET:

        Dim iTime() As Integer = {1, 10, 18, 28, 37, 49, 56, 69}
        Dim sAcc() As Single = {-1.42, -1.22, -0.56, 0.43, 1.26, 1.56, 1.85, 1.02}
        Dim lsNewAcc As New List(Of Single)
        Dim i, j As Integer
        Dim sDelta As Single
        j = 10
        For i = 0 To iTime.Length - 2
            If j = iTime(i) Then
                lsNewAcc.Add(sAcc(i))
                j += 10
            End If
            If j > iTime(i) And j < iTime(i + 1) Then
                sDelta = (sAcc(i + 1) - sAcc(i)) / (iTime(i + 1) - iTime(i))
                lsNewAcc.Add(sAcc(i) + (sDelta * (j - iTime(i))))
                j += 10
            End If
        Next i

lsNewAcc indeholder nu acceleration for 10,20,30,40,50 og 60
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Danske Spil A/S

Senior IT-projektleder

Fonden DBK

.Net/C#-udviklere

Cognizant Technology Solutions Denmark ApS

Test Manager

Cognizant Technology Solutions Denmark ApS

Data Architect