A set of Matlab/Octave files that performs a method of Nonlinear System Identification.
Jupyter Notebook Matlab TeX
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.ipynb_checkpoints nb update Jan 19, 2016
.~lock.mfrols.m# remove Constant Function la add May 2, 2016
FROLSExampleNotebook_Matlab.ipynb remove Constant Function la add May 2, 2016
FROLSTest.m octave compatibility Jan 22, 2016
GFRF.tex remove Constant Function la add May 2, 2016
GFRF2LaTeX.m plot GFRF frequency representation improvement Dec 8, 2015
NARMAXCompleteIdentification.m plot GFRF frequency representation improvement Dec 8, 2015
NARXModelIdentificationOf2Signals.m plot GFRF frequency representation improvement Dec 8, 2015
NARXNoiseModelIdentification.m plot GFRF frequency representation improvement Dec 8, 2015
README.md Update README.md Aug 16, 2017
buildHn.m plot GFRF frequency representation improvement Dec 8, 2015
buildPElsMatrix.m plot GFRF frequency representation improvement Dec 8, 2015
buildPMatrix.m plot GFRF frequency representation improvement Dec 8, 2015
buildPNoiseMatrix.m plot GFRF frequency representation improvement Dec 8, 2015
computeDegreeNOFRF.m NOFRF degree control and notebook update Dec 11, 2015
computeNOFRF.m NOFRF degree control and notebook update Dec 11, 2015
computeSignalFFT.m plot GFRF frequency representation improvement Dec 8, 2015
computeSignalsGFRF.m remove Constant Function la add May 2, 2016
computeSystemNOFRF.m NOFRF degree control and notebook update Dec 11, 2015
crosscorr.m plot GFRF frequency representation improvement Dec 8, 2015
determineFrequencies.m NOFRF degree control and notebook update Dec 11, 2015
els.m plot GFRF frequency representation improvement Dec 8, 2015
findCCoefficients.m plot GFRF frequency representation improvement Dec 8, 2015
findPMatrixSize.m plot GFRF frequency representation improvement Dec 8, 2015
inputFFTDegree.m plot GFRF frequency representation improvement Dec 8, 2015
license Create license Dec 13, 2016
measuredPlot.m measuredPlot doc Jan 6, 2016
mfrols.m mfrols help May 2, 2016
mfrols_par.m mfrols help May 2, 2016
modelLags.m plot GFRF frequency representation improvement Dec 8, 2015
osa.m plot GFRF frequency representation improvement Dec 8, 2015
osaELS.m plot GFRF frequency representation improvement Dec 8, 2015
plotColoredLine.m plot GFRF frequency representation improvement Dec 8, 2015
plotGFRF.m octave compatibility Jan 22, 2016
ref.bib Update ref.bib Aug 16, 2017
removeConstant.m remove Constant Function la add May 2, 2016
testIdentifiedModel100.mat remove Constant Function la add May 2, 2016
v2struct.m Update of the example file for the GFRF use Nov 17, 2015
validation.m improve the help descriptions of the functions Dec 2, 2015

README.md

FROLSIdentification

written by: Renato Naville Watanabe

##Files to perform discrete nonlinear system identification and analysis

The files in this repository were written to perform the system identification of nonlinear systems. An updated version can be found in https://github.com/rnwatanabe/FROLSIdentification. The method used is the algorithm known as Forward Regression with Orthogonal Least Squares (FROLS), developed by Stephen Billings and his group. All the files were written by me, Renato Naville Watanabe, except the v2struct.m file, used to deal with the structs from Matlab.

How to use the files

Download all the files in the same directory. The files were written to run in the Matlab® platform, so if you want to run them on Matlab®, you will need a license of the Matlab® software. To run the functions that compute the Generalized Frequency Response Function (GFRF) and Nonlinear Output Frequency Response Function (NOFRF), you will need a license of the Matlab® Symbolic Math Toolbox.

Once you have downloaded all the files in the same directory, run the FROLSTest.m file to execute an example.

GNU Octave

Although all the files were written in Matlab®, they work equally well in the free software GNU Octave. To use the files from this repository in Octave you must have installed the symbolic package (http://octave.sourceforge.net/symbolic/). To use the symbolic package from Octave you must have a Python installation with the SymPy library. I recommend the use of the Anaconda distribution of Python (https://www.continuum.io/downloads). The files were tested in the Octave 4.0 version on Ubuntu (https://www.gnu.org/software/octave/download.html).

To execute an example on GNU Octave, download all the files in the same directory and run the FROLSTest.m file.

Notebook

An explanation of the algorithm implementation is also available in the format of notebook. You can also download the notebook file and execute in your own computer. In this case you will need to install the Jupyter environment and either the Matlab or Octave kernel.

How to cite this work

If you use the codes from this repository, please cite the following paper as the used implementation of the algorithm:

"WATANABE, R. N.; KOHN, A. F. System identification of a motor unit pool using a realistic neuromusculoskeletal model. In: 5th IEEE RAS & EMBS International Conference on Biomedical Robotics and Biomechatronics, 2014. p. 610–615."

If you use the GFRF part of this repository, please cite the following paper as the used implementation of the algorithm:

"WATANABE, R. N, ; KOHN, A.F .(2017). Nonlinear frequency-domain analysis of the transformation of cortical inputs by a motoneuron pool-muscle complex. IEEE Transactions on Neural Systems and Rehabilitation Engineering, 4320(c), 1–1."

You can find the Bibtex file of this reference here.

Funding

The development of the software presented here was fully funded by the São Paulo Research Foundation (FAPESP, grant number 2011/21103-7).

License

This work is licensed under the GNU GENERAL PUBLIC LICENSE 3.