Title: Multivariable interconnect functionality by murrayrm · Pull Request #881 · python-control/python-control · GitHub
Open Graph Title: Multivariable interconnect functionality by murrayrm · Pull Request #881 · python-control/python-control
X Title: Multivariable interconnect functionality by murrayrm · Pull Request #881 · python-control/python-control
Description: This PR expands the interconnect function to allow a variety of "multivariable" specifications for connections, inputs, and outputs when systems have variables with names of the form sig[i]: Specifying a signal as sys.sig will match all signals of the form sys.sig[i]. So a MIMO feedback system interconnection assuming the usual input/output naming conventions can be written as connections=[['P.u', 'C.y'], ['C.u', '-P.y']], inplist='C.u', outlist='P.y' (before this PR, you would have to write connections=[['P.u[0]', 'C.u[0]'], ['P.u[1]', 'C.u[1]'], ...]). Signal ranges can be described using string specifications of the form sys.sig[i:j] or tuple specifications of the form (sys_index, [i1, ..., iN], gain) instead of having to write all signals out explicitly. Signals can also be specified just using the base name, in which case all signals with that base name, regardless of the subsystem, will be used as part of a connection (typically used for input and output connections). Specifying just the system name is interpreted as using all inputs or outputs (as appropriate in context). So a feedback system interconnections can be written using connections=[['P', 'C'], ['C', -P]], inplist='C', outlist='P' (note that the input to C will be the sum of the input to the new system and the negation of the plant output, so the error between the reference and the output). New functions are available to find lists of inputs, outputs, and states from a (multivariable) description: sys.find_inputs, sys.find_outputs, sys.find_states. Each returns a list of indices (versus the singular version, which returns a single index). Indexing of (linear) systems, such as linsys[2, 1], now preserves signal names and modifies the system name using configurable a prefix and suffix (default is to append '$indexed' to the system name). Unit tests and documentation (including examples of calling formats) have been added. Note: one change in this PR is that you now must use lists rather than tuples when specifying lists of signals. This is consistent with the documentation from previous versions, but some examples used tuples instead of lists. In order to handle the multi-variable case, the only place that a tuple should be used is as a low level signal specification. Everything else should be a list.
Open Graph Description: This PR expands the interconnect function to allow a variety of "multivariable" specifications for connections, inputs, and outputs when systems have variables with names of the form sig[...
X Description: This PR expands the interconnect function to allow a variety of "multivariable" specifications for connections, inputs, and outputs when systems have variables with names of the f...
Opengraph URL: https://github.com/python-control/python-control/pull/881
X: @github
Domain: github.com
| route-pattern | /:user_id/:repository/pull/:id/checks(.:format) |
| route-controller | pull_requests |
| route-action | checks |
| fetch-nonce | v2:9865b13c-52a3-1e6a-a925-8feaa67bb80e |
| current-catalog-service-hash | 87dc3bc62d9b466312751bfd5f889726f4f1337bdff4e8be7da7c93d6c00a25a |
| request-id | DD36:D0FE2:150A40D:1C0B464:6979920C |
| html-safe-nonce | aa41a2709f5c957f74c41278936321055d7b8877eee3f74c745433a20f3c2349 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJERDM2OkQwRkUyOjE1MEE0MEQ6MUMwQjQ2NDo2OTc5OTIwQyIsInZpc2l0b3JfaWQiOiI5MTI3ODYzNTUzNzgzMDc1MzQwIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | cd5f8b4012b3cd2cfae6959fbf1592ac1975c19ac2f2f616fb70a729b3443561 |
| hovercard-subject-tag | pull_request:1299003574 |
| github-keyboard-shortcuts | repository,pull-request-list,pull-request-conversation,pull-request-files-changed,checks,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/python-control/python-control/pull/881/checks |
| twitter:image | https://avatars.githubusercontent.com/u/293362?s=400&v=4 |
| twitter:card | summary_large_image |
| og:image | https://avatars.githubusercontent.com/u/293362?s=400&v=4 |
| og:image:alt | This PR expands the interconnect function to allow a variety of "multivariable" specifications for connections, inputs, and outputs when systems have variables with names of the form sig[... |
| og:site_name | GitHub |
| og:type | object |
| hostname | github.com |
| expected-hostname | github.com |
| None | c049b65ec7e54cbf2521f5a560b6527714c612b0bd169188e2ea6e16f83bd5f4 |
| turbo-cache-control | no-preview |
| go-import | github.com/python-control/python-control git https://github.com/python-control/python-control.git |
| octolytics-dimension-user_id | 2285872 |
| octolytics-dimension-user_login | python-control |
| octolytics-dimension-repository_id | 22791752 |
| octolytics-dimension-repository_nwo | python-control/python-control |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 22791752 |
| octolytics-dimension-repository_network_root_nwo | python-control/python-control |
| turbo-body-classes | logged-out env-production page-responsive full-width full-width-p-0 |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 87b137883e35e2766c3d0f6a257c4044f6390b83 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width