|pytest| |Docs Status| |DOI|
sdypy-EMA
=========
Experimental and operational modal analysis
This project is successor of the `pyEMA`_ project. pyEMA is no longer developed after version 0.26.
Basic usage
-----------
Import ``EMA`` module:
~~~~~~~~~~~~~~~~~~~~~~
.. code:: python
from sdypy import EMA
Make an instance of ``Model`` class:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: python
a = EMA.Model(
frf_matrix,
frequency_array,
lower=50,
upper=10000,
pol_order_high=60
)
Compute poles:
~~~~~~~~~~~~~~
.. code:: python
a.get_poles()
Determine correct poles:
~~~~~~~~~~~~~~~~~~~~~~~~
The stable poles can be determined in two ways:
1. Display **stability chart**
.. code:: python
a.select_poles()
The stability chart displayes calculated poles and the user can hand-pick the stable ones.
2. If the approximate values of natural frequencies are already known, it is not necessary to display the stability chart:
.. code:: python
approx_nat_freq = [314, 864]
a.select_closest_poles(approx_nat_freq)
After the stable poles are selected, the natural frequencies and damping coefficients can now be accessed:
.. code:: python
a.nat_freq # natrual frequencies
a.nat_xi # damping coefficients
Reconstruction:
~~~~~~~~~~~~~~~
There are two types of reconstruction possible:
1. Reconstruction using **own** poles (the default option):
.. code:: python
H, A = a.get_constants(whose_poles='own')
where **H** is reconstructed FRF matrix and **A** is a matrix of modal constants.
2. Reconstruction on **c** using poles from **a**:
.. code:: python
c = EMA.Model(frf_matrix, frequency_array, lower=50, upper=10000, pol_order_high=60)
H, A = c.get_constants(whose_poles=a)
.. |Docs Status| image:: https://readthedocs.org/projects/sdypy-ema/badge/
:target: https://sdypy-ema.readthedocs.io/
.. |DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.4016671.svg?
:target: https://doi.org/10.5281/zenodo.4016671
.. |pytest| image:: https://github.com/sdypy/sdypy-EMA/actions/workflows/python-package.yml/badge.svg
:target: https://github.com/sdypy/sdypa-EMA/actions
.. _sdypy: https://github.com/sdypy/sdypy
.. _pyEMA: https://github.com/ladisk/pyEMA
Raw data
{
"_id": null,
"home_page": null,
"name": "sdypy-EMA",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": "\"Janko Slavi\u010d et al.\" <janko.slavic@fs.uni-lj.si>",
"keywords": "EMA, Experimental Modal Analysis, OMA, Structural Dynamics",
"author": null,
"author_email": "\"Janko Slavi\u010d et al.\" <janko.slavic@fs.uni-lj.si>",
"download_url": "https://files.pythonhosted.org/packages/73/ed/b98fc4729e7b034f719930803c99188afae921b6dde4f3afc843e0d65f97/sdypy_ema-0.29.1.tar.gz",
"platform": null,
"description": "|pytest| |Docs Status| |DOI|\n\n\nsdypy-EMA\n=========\n\nExperimental and operational modal analysis\n\nThis project is successor of the `pyEMA`_ project. pyEMA is no longer developed after version 0.26.\n\nBasic usage\n-----------\n\nImport ``EMA`` module:\n~~~~~~~~~~~~~~~~~~~~~~\n\n.. code:: python\n\n from sdypy import EMA\n\n\nMake an instance of ``Model`` class:\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code:: python\n\n a = EMA.Model(\n frf_matrix,\n frequency_array,\n lower=50,\n upper=10000,\n pol_order_high=60\n )\n\nCompute poles:\n~~~~~~~~~~~~~~\n\n.. code:: python\n\n a.get_poles()\n\nDetermine correct poles:\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe stable poles can be determined in two ways: \n\n1. Display **stability chart**\n\n.. code:: python\n \n a.select_poles()\n\nThe stability chart displayes calculated poles and the user can hand-pick the stable ones.\n\n2. If the approximate values of natural frequencies are already known, it is not necessary to display the stability chart:\n\n.. code:: python\n\n approx_nat_freq = [314, 864] \n a.select_closest_poles(approx_nat_freq)\n\nAfter the stable poles are selected, the natural frequencies and damping coefficients can now be accessed:\n\n.. code:: python\n\n a.nat_freq # natrual frequencies\n a.nat_xi # damping coefficients\n\nReconstruction:\n~~~~~~~~~~~~~~~\n\nThere are two types of reconstruction possible: \n\n1. Reconstruction using **own** poles (the default option):\n\n.. code:: python\n\n H, A = a.get_constants(whose_poles='own')\n\nwhere **H** is reconstructed FRF matrix and **A** is a matrix of modal constants.\n\n2. Reconstruction on **c** using poles from **a**:\n\n.. code:: python\n\n c = EMA.Model(frf_matrix, frequency_array, lower=50, upper=10000, pol_order_high=60)\n\n H, A = c.get_constants(whose_poles=a)\n\n.. |Docs Status| image:: https://readthedocs.org/projects/sdypy-ema/badge/\n :target: https://sdypy-ema.readthedocs.io/\n.. |DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.4016671.svg?\n :target: https://doi.org/10.5281/zenodo.4016671\n.. |pytest| image:: https://github.com/sdypy/sdypy-EMA/actions/workflows/python-package.yml/badge.svg\n :target: https://github.com/sdypy/sdypa-EMA/actions\n\n\n.. _sdypy: https://github.com/sdypy/sdypy\n\n.. _pyEMA: https://github.com/ladisk/pyEMA\n",
"bugtrack_url": null,
"license": null,
"summary": "Experimental and operational modal analysis.",
"version": "0.29.1",
"project_urls": {
"documentation": "https://sdypy-EMA.readthedocs.io/en/latest/index.html",
"homepage": "https://github.com/sdypy/sdypy-EMA",
"source": "https://github.com/sdypy/sdypy-EMA"
},
"split_keywords": [
"ema",
" experimental modal analysis",
" oma",
" structural dynamics"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "b628e8ef6b28f34c680b71c082d9a825f662a4444b88c8bd91478d551075f749",
"md5": "a5a3b72dada2cb17f3adb8dc12c1b051",
"sha256": "de04db467853e46109e1ff95ef7c005dd681fdccecfe886bf67e2c0b68dc276a"
},
"downloads": -1,
"filename": "sdypy_ema-0.29.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a5a3b72dada2cb17f3adb8dc12c1b051",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 26497,
"upload_time": "2025-07-17T04:35:11",
"upload_time_iso_8601": "2025-07-17T04:35:11.942093Z",
"url": "https://files.pythonhosted.org/packages/b6/28/e8ef6b28f34c680b71c082d9a825f662a4444b88c8bd91478d551075f749/sdypy_ema-0.29.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "73edb98fc4729e7b034f719930803c99188afae921b6dde4f3afc843e0d65f97",
"md5": "ce0b4901da4dd81c26eb482ba7cf4d56",
"sha256": "d5972cb8ec23f93b53c6edf1a78c643958828790a955d87a2c29ed2706ee57de"
},
"downloads": -1,
"filename": "sdypy_ema-0.29.1.tar.gz",
"has_sig": false,
"md5_digest": "ce0b4901da4dd81c26eb482ba7cf4d56",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 24650,
"upload_time": "2025-07-17T04:35:13",
"upload_time_iso_8601": "2025-07-17T04:35:13.098568Z",
"url": "https://files.pythonhosted.org/packages/73/ed/b98fc4729e7b034f719930803c99188afae921b6dde4f3afc843e0d65f97/sdypy_ema-0.29.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-17 04:35:13",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "sdypy",
"github_project": "sdypy-EMA",
"travis_ci": true,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "tqdm",
"specs": [
[
">=",
"4.23.4"
]
]
},
{
"name": "numpy",
"specs": [
[
">=",
"1.14.3"
]
]
},
{
"name": "matplotlib",
"specs": [
[
">=",
"3.3.1"
]
]
},
{
"name": "scipy",
"specs": [
[
">=",
"1.1.0"
]
]
},
{
"name": "pyuff",
"specs": [
[
">=",
"2.1"
]
]
},
{
"name": "pyLump",
"specs": []
}
],
"lcname": "sdypy-ema"
}