initial release of I/O systems module#301
Merged
murrayrm merged 6 commits intopython-control:masterfrom Jun 9, 2019
Merged
Conversation
Member
Author
|
Since this PR is orthogonal to existing code (since it adds a new module), I am going to go ahead and merge this so that people can play around with it a bit. (Also, I need it for the python code that goes along with the second edition of FBS...). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR introduces a new module for representing (nonlinear) input/output systems and support for simulation, linearization, and composition. The following features are supported:
Input/output systems can be created using the
LinearIOSystemandNonlinearIOSystemclasses, and I/O systems can be simulated in continuous and discrete time using theinput_output_response()function, which is equivalent to theforced_response()function for LTI system.Input/output systems can be composed using the existing
series,parallel, andfeedbackfunctions, as well as using the*and+operators. In addition, theInterconnectedSystemclass can be used to interconnect a collection of I/O subsystems, with functionality similar to theconnectfunction in MATLAB.Input/output systems and input/output signals can be named and Interconnections between I/O systems can be specified using system and signal names.
Input/output systems can be linearized about an equilibrium point using the
linearize()function, which returns aLinearIOSystemobject. TheLinearIOSystemis derived from theStateSpaceclass, allowing all operations on linear systems to be applied to the linearized system. Thefind_eqptfunction can be used to find an equilibrium point for an input/output system.Documentation and examples are included to illustrate the use of the
iosysmodule.For the most part, the changes in this PR are restricted to the new
iosys.pymodule and the corresponding test and documentation files. Some small modifications were required in other modules to support the features of this new module.This PR is an initial release that implements fairly minimal functionality. A list of additional features that should be added are included at the top of the
iosys.pyfile.