Coder Social home page Coder Social logo

strid's Introduction

strid

Python package for system identification of linear time-invariant systems.

The package is written from a structural engineering perspective. However, the identification methods are applicable to linear time-invariant systems, and the implementation may also be used in other domains.

The primary focus of this package is to provide funtionality to identify models of linear time-invariant systems.

Additionally, the package has a class for stabilization diagrams for selecting modes interactively, a spatial module for establishing a spatial model of a structure and converting a mode shape vector to a deformation array for a higher order 3D mesh and a class for plotting and animating mode shapes on spatial models with matplotlib. Below is an animation of the first horizontal bending mode of the railway bridge at Hell, identified and animated by strid alone:

hell_animation

Installation

Either download the repository to your computer and install, e.g. by pip

pip install .

or install directly from github

pip install git+https://github.com/gunnstein/strid.git

or install directly from the python package index

pip install strid

Usage

The code example below shows how the modes of a combined deterministic-stochastic system can be obtained from measurements of the input u and the output y.

# ..
# Assume that the measured input u and output y and sampling rate is available
#
# First, import the strid module
import strid

# Then instanciate the appropriate subspace identification (SID) object
csid = strid.CombinedDeterministicStochasticSID(u, y, fs)

# If we know the model order we can now perform the SID and obtain the
# state space system matrices. For instance, we can  20 block rows and
# a model order of 100 as shown below
A, B, C, D = csid.perform(100, 20, estimate_B_and_D=True)

# Most often, we do not know the model order, and instead we overestimate
# model order and pick the physical modes with the help of a stabilization
# diagram. Strid also includes a stabilization diagram and functionality to
# pick modes directly from the plot.
# First, we must estimate modes for a range of different model orders
modes = dict()
for order in range(5, 150, 1):
    A, C = csid.perform(order, 20)
    modes[order] = strid.Mode.find_modes_from_ss(A, C, csid.fs)

# Then we can create and plot a stabilization diagram (see image below)
stabdiag = strid.StabilizationDiagram()
stabdiag.plot(modes)

# And we can use the mouse to pick the stable poles from
# the diagram and then access the picked modes with the
# `picked_modes` property of the StabilizationDiagram instance.
picked_modes = stabdiag.picked_modes

stab_plot

Additional examples are found in the examples folder.

Support

Please open an issue for support.

Contributing

Please contribute using Github Flow. Create a branch, add commits, and open a pull request.

strid's People

Contributors

gunnstein 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.