GithubHelp home page GithubHelp logo

adamnemecek / time_domain_signal_system_identification Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fullerf/time_domain_signal_system_identification

0.0 1.0 0.0 372 KB

Decomposes time-domain signals with an unknown strict, proper transfer function into the Takenaka-Malmquist general basis, using adaptively found system poles.

License: MIT License

Julia 91.06% Python 8.94%

time_domain_signal_system_identification's Introduction

Time_Domain_Signal_System_Identification

Decomposes time-domain signals with an unknown strict, proper transfer function into the Takenaka-Malmquist general basis, using adaptively found system poles. The algorithm is derived from a body of literature from Tao Qian, which he calls AFD: Adaptive Fourier Decomposition. Visit his website for a list of papers and a matlab implementation of his software: http://www.fst.umac.mo/en/staff/fsttq.html

To my knowledge, there are no implementations or algorithms published which use AFD for signals described by strict, proper transfer functions. To be clear, this means the time domain signal is causal, decays to zero at infinity, and has a transfer function which has greater polynomial order in the denominator than in the numerator. Such signals are common in spectroscopy. Extending AFD to this signal domain was fairly straight-forward. This repository, written in Julia, hosts the code that implements AFD in this signal domain.

Installation:

At the moment, what I have is a small pile of functions wrapped in a module. Clone this directory and then use the commands: include("Path_TO_YOUR_CLONE/AFDM.jl") using AFDM

On windows machines, in IJulia or the Forio IDE, you need to use linux style / slashes in the path, rather than the windows style \ slashes. Or you need to use double \ instead of . Either works. Once you've included the funciton pile, it gives you access to the following main functions:

  1. afd(xn,Nmax,Nz): Takes a one-dimensional time domain measurement xn, which is assumed (for now) to be sampled on an even time grid. It will then iterate Nmax times over about Nz candidate poles within the unit disk. It returns the Nmax poles and their amplitudes.
  2. reconstructTimeDomain(poles,amps,t): Takes a vector poles and their associated amplitudes and reconstructs the time domain signal at a requested time index t. t can be a float valued, which means that the reconstructed time domain signal allows you to interpolate between sampled time points.
  3. czt(xn,A,W,k): The chirp z transform, evaluating the z-transform of xn along a spiral starting at A and continuing every W^n thereafter for k points.
  4. UnitDiskGrid(Nz,delta): Produces about Nz points inside the unit disk, ranging from delta to 1-delta.

time_domain_signal_system_identification's People

Contributors

fullerf avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.