Comments (10)
Regarding making plots interactive, you could use events from Matplotlib to respond to clicks, e.g., using matplotlib.backend_bases.MouseEvent.
from python-control.
My 2c: don't forget about Nichols. It might be worth separating the frequency response and root-locus into separate issues.
For the frequency plots, one could also consider showing low and high frequency asymptotes.
One idea I had for this to have the number of sample points be a multiple of the number of poles and zeros, though that is a bit simplistic. Another idea is to relate the density of the sample points to the curvature of the graph (though I don't know how to turn that into an algorithm...)
from python-control.
one thing we also need are damping-omega grids for root-locus.
for root-locus, having the break-in and break-out points in the gain vector already helps,
from python-control.
Concerning the damping-omega grids as @repagh said, I have written a simple function that draws the grid for Z-domain (zgrid):
https://gist.github.com/Sup3rGeo/17d0eb2b0f4d60c1ebd24695ac692b5d
Is there any possibility for this to be added to the python-control functions? I have never contributed to open source projects before, but if you tell me if what to do I can perhaps create a pull request for this.
from python-control.
Created a PR for this (#193)
from python-control.
Can we have more of what might be improved from what is already present in the library?
Thanks to all the improvements you done since the creation of this issue, I can't say if it's closed or not.
from python-control.
For the Nyquist plot, I would like to see:
- Smoother lines. This can be done by sampling the system better in regions where |d(Mag)/df| is large.
- Better scaling (not sure how to do this). With systems that have a lot of DC gain or if there is a deep bandstop filter, its difficult to see the detail just due to the dynamic range.
- It would be good to have arrows denoting the direction of increasing frequency, as matlab has.
- This is an example where the frequency is encoded as color changes in the curve (https://lpsa.swarthmore.edu/Nyquist/NyquistExamples.html).
This paper (https://doi.org/10.1109/ECC.2014.6862243) shows a way to plot the Nyquist logarithmically.
from python-control.
Great set of suggestions @rxa254. If anyone wants to sign up for these changes, that would be great. Maybe some summer coding practice for @cwrowley?
from python-control.
PRs #522 and #534 address some (but not all) of the suggestions here. In particular, #522 adds more points for frequency response plots and #534 has directional arrows and other features.
from python-control.
There is some nice looking code for JuliaControl that we might take a look at for improving frequency response plots.
from python-control.
Related Issues (20)
- How to convert finite step response model to state space representation? HOT 2
- Output calcs produce 0's at every other call HOT 2
- equations not showing up correctly in online docs HOT 2
- Interconnect function strange behavior HOT 3
- TypeError: No support for MIMO without slycot HOT 4
- TimeResponseData.to_pandas() fails if there are no states in a NonlinearIOSystem HOT 1
- plotting example mimo system HOT 1
- Display Connection Matrix HOT 8
- (accidentally opened issue with garbage title) HOT 1
- Observability Gramian for discrete-time systems HOT 8
- `phase_plot` ODE function signature is not compatible with `solve_ivp` and `StateSpace.dynamics` HOT 2
- Strange nondeterministic issues when using `phase_plot` with `X`, `Y` and `X0` set HOT 1
- `control.mixsyn` hangs on M1 HOT 2
- Scaling for control.impulse_response discrete time is not correct HOT 6
- documentation out of date HOT 1
- Wrong parameter name in documentation HOT 1
- Parallel system interconnection using `control.interconnect()` HOT 4
- Plotting nyquist plot from FrequencyResponseData fails HOT 3
- forced_response giving different output depending on Python and/or numpy version HOT 9
- inconsistent kwarg klist/kvect/gains in rlocus doc HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from python-control.