{"action":"created","issue":{"url":"https://api.github.com/repos/scipy/scipy/issues/4881","repository_url":"https://api.github.com/repos/scipy/scipy","labels_url":"https://api.github.com/repos/scipy/scipy/issues/4881/labels{/name}","comments_url":"https://api.github.com/repos/scipy/scipy/issues/4881/comments","events_url":"https://api.github.com/repos/scipy/scipy/issues/4881/events","html_url":"https://github.com/scipy/scipy/pull/4881","id":77362126,"number":4881,"title":"scipy.signal: Add the class ltid for linear discrete-time systems. Closes #2912","user":{"login":"befelix","id":1336104,"avatar_url":"https://avatars.githubusercontent.com/u/1336104?v=3","gravatar_id":"","url":"https://api.github.com/users/befelix","html_url":"https://github.com/befelix","followers_url":"https://api.github.com/users/befelix/followers","following_url":"https://api.github.com/users/befelix/following{/other_user}","gists_url":"https://api.github.com/users/befelix/gists{/gist_id}","starred_url":"https://api.github.com/users/befelix/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/befelix/subscriptions","organizations_url":"https://api.github.com/users/befelix/orgs","repos_url":"https://api.github.com/users/befelix/repos","events_url":"https://api.github.com/users/befelix/events{/privacy}","received_events_url":"https://api.github.com/users/befelix/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/scipy/scipy/labels/scipy.signal","name":"scipy.signal","color":"207de5"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":22,"created_at":"2015-05-17T18:13:01Z","updated_at":"2016-04-15T20:47:55Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/scipy/scipy/pulls/4881","html_url":"https://github.com/scipy/scipy/pull/4881","diff_url":"https://github.com/scipy/scipy/pull/4881.diff","patch_url":"https://github.com/scipy/scipy/pull/4881.patch"},"body":"This extends the current system representation to discrete-time systems. The overall idea is to have a master class ```LinearTimeInvariantSystem```, that combines all the functionality, but is not actually designed to be called by the user. Below that are ```lti``` and ```ltid```, which can be called and return the corresponding subclass (e.g. ```StateSpace```). What's new now, is that these subclasses don't inherit from ```lti``` anymore. Instead they return an instance of ```StateSpaceContinuous``` or ```StateSpaceDiscrete```, depending on the input arguments. These last subclasses inherit from ```StateSpace``` and ```lti``` or ```ltid```, which enables the ```StateSpace``` class to decide at runtime from which of the two it should inherit. While these last names seem cumbersome, you never actually have to type them, use them, or even see them (unless you call print on a system).\r\n\r\nIn summary: Everything stays the same for continuous-time systems. But for discrete-time systems there is now ```ltid``` and you can call ```StateSpace(1,1,1,1, 0.05)```, where 0.05 is the sampling time.\r\n\r\nOne drawback: \r\n- Since lti/ltid classes share functionality, some functions had to be moved to the same file in order to avoid circular imports. Specifically, the files dltisys.py and cont2discrete.py were removed.\r\n\r\nThis ended up being a rather large commit and took time to get to a state that I think is good. It would be great if you could invest some time to review it. Imho this is the last big user-facing change to the api that needs to happen in order to make linear systems in scipy useful."},"comment":{"url":"https://api.github.com/repos/scipy/scipy/issues/comments/210640943","html_url":"https://github.com/scipy/scipy/pull/4881#issuecomment-210640943","issue_url":"https://api.github.com/repos/scipy/scipy/issues/4881","id":210640943,"user":{"login":"e-q","id":6894112,"avatar_url":"https://avatars.githubusercontent.com/u/6894112?v=3","gravatar_id":"","url":"https://api.github.com/users/e-q","html_url":"https://github.com/e-q","followers_url":"https://api.github.com/users/e-q/followers","following_url":"https://api.github.com/users/e-q/following{/other_user}","gists_url":"https://api.github.com/users/e-q/gists{/gist_id}","starred_url":"https://api.github.com/users/e-q/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/e-q/subscriptions","organizations_url":"https://api.github.com/users/e-q/orgs","repos_url":"https://api.github.com/users/e-q/repos","events_url":"https://api.github.com/users/e-q/events{/privacy}","received_events_url":"https://api.github.com/users/e-q/received_events","type":"User","site_admin":false},"created_at":"2016-04-15T20:47:55Z","updated_at":"2016-04-15T20:47:55Z","body":"Hey @befelix, if you don't have time to move this forward, I can take this over and squash and commit this along with `dbode` and some more tests. "}}