There are certain functionalities of SymPy such as solving differential equations, transform calculus, integral calculus etc. that a user may use in order to use SymPy for Signal Processing (SP) as well as Control System (CS) applications, however he/she has to entirely code a new method or function that is specific to his/her domain. Moreover, it would require a person with a decent amount of coding knowledge in order to implement the application they want. In addition to that a researcher or a student would just want to enter an expression and get the output he/she wants. Hence I propose the following:
Phase 1: The goal of Phase 1 would be to use SymPy's own existing methods for simple SP and CS applications.
We update the existing packages such as plotter, transform calculus, solvers etc . in order to cater to SP and CS needs. For example, we'd have to add pole zero plots, magnitude response plots, phase response plots to the plotter package. The alternative would be to create a new package that caters specifically to the needs of SP and CSA. This package would have methods that compute the magnitude response, phase responses, bode plots, phase plots, magnitude plots etc.
The developments in this phase would target an intermediate student or a novice researcher for basic functionalities.
Phase 2: We develop new functionalities for SP and CS applications.
We would be implementing DFT, Z Transform, Wavelet Transform, Fourier Bessel Transform etc which can be calculated using the calculus as well as transform libraries.
In addition to that solving differential equations could be done in the Laplace, Fourier or Z Domain (depending on the application), and the steps could also be displayed (which would help a student a lot).
The developments in this phase would target an intermediate researcher for advanced functionalities.
Phase 3: Add GUI functionalities as well as simulators
We could add a GUI Bond Graph Tool that would help researchers define a system easily and obtain the response.
Moreover we could also add a simulator that correctly simulates the output, given certain boundary value conditions.
This is just a rough outline of what I believe would be the ideal approach. All suggestions are welcome, and these phases would be tweaked after the discussion.
I had already started working on Phase 1: The link to the PR is
click here.