Because you may have fun working in a scientific environment and doing research.
I liked my job at the university - independent of the final PhD. I enjoyed what I was doing. Most of the time I also enjoyed writing my dissertation, since I was given the opportunity to write about my stuff. And mostly I could write it in a way how I felt things are supposed to be explained.
I did my PhD with Octave. Sure, I did not have this nice convex optimization toolbox. But I had everything else I needed and did not need to wait because people arrived earlier in the lab and grabbed all floating licenses of, for instance, the communications toolbox.
However, I switched to Python during the last years.
Before areas become completely uninhabitable, we will see areas become increasingly stressed: heat waves, more extreme weather events, poorer crop yields, depleting aquifers.
Stress increases conflict risk. Fights for essential resources (land, water, food, shelter) will break out long before those essential resources are completely gone.
If we skip past the immense suffering and death part, we will probably end up on a planet where national borders have been redrawn by war and desperation, and a smaller population that lives in more northerly climes.
Our politicians are already thinking about them, which is why they are cracking down on immigration and generating relentless propaganda demonizing refugees and asylum seekers.
Technologies:
- Digital signal processing: linear algebra, estimation theory, statistical/Bayesian signal processing, compressed sensing and others
- Programming: C++, C, C#, ARM assembly, AVX/SSE, Python, Bash, PowerShell 5/7.x, GNU Octave, Matlab
- Used libraries: Boost (C++), ffmpeg, gSOAP, gRPC, libcurl, NumPy, SciPy, Pandas, PyTorch and others
- Target platforms: x64, ARM Cortex M0/M3
- Tools: Git, Mercurial, SVN, CMake, GNU Make, Jenkins, Gitlab, rpmbuild
- OS: GNU Linux (eg., Arch), Windows
Résumé/CV:
- PhD and diploma in Electrical Engineering and Information Technology.
- PhD study about digital signal processing applied to antenna arrays.
I am a software engineer and researcher with a strong background in digital signal processing. I worked in the field of music recognition (C++ & Python), in embedded systems (esp. ARM Cortex) and in the communication between control centers (ITCS systems) and public transportation vehicles. Currently I am into Integrated Communications and Sensing (ICAS) which brings together Radar and mobile communications.
I like to solve challenging problems - via software engineering, via signal processing, or via a combination of both. Linux and algorithms are topics I have a strong interest in. While I educate myself regarding other technologies like transformers and deep neural networks (e.g. applied to OFDM), and cyber security ("playing" OWASP Juice Shop).
In past jobs, I worked as a Senior Software Engineer and as a Lead Software Developer, respectively. Currently, I am a post-doc researcher at a German university.
In case "framework" is understood as something that calls my code and that forces me to write my code in a certain way, I totally agree.
And I think twice before I use a framework. Frameworks enforce a certain way of programming which you can never be sure to match the problems you will have to solve in the future. Libraries don't do this - at least not to the extent of a framework. Libraries are composable building blocks.
Nevertheless, there may be applications where frameworks are beneficial (e.g. GNU Radio).
FFT/DFT is not precise if you do not have the exact harmonic in you signal. If you are also (or only) interested in phases you might use a maximum likelihood estimator (which brings other problems though).
And as the previous answer said: compressed sensing (or compressive sensing) can help as well for some non-standard cases.
A while back I looked at matching pursuit. At first it seemed very complicated, but after staring at it a bit realized it's simple.
- Start with a list of basis functions and your signal.
- Go through the list and find the basis function that best correlates with the signal. This gives you a basis function and a coefficient.
- Subtract out the basis function (scaled by the coefficient) from your signal, and then repeat with this new residual signal.
The Fourier transform is similar using sine wave basis functions.
The key that makes this work in situations where the Nyquist theorem says we don't have a high enough sampling rate is ensuring our sampling (possibly random) is un-correlated with the basis functions and our basis functions are good approximations for the signal. That lowers the likelihood that our basis functions correlating well with our samples is by chance and raises likelihood it correlates well with the actual signal.
I have not read the whole article. But, what is shown at the beginning is not the Fourier Transform, it is the Discrete Fourier Transform (DFT).
Though the DFT can be implemented efficiently using the Fast Fourier Transform (FFT) algorithm, the DFT is far from being the best estimator for frequencies contained in a signal. Other estimators (like Maximum Likelihood [ML], [Root-]MUSIC, or ESPRIT) are in general far more accurate - at the cost of higher computational effort.
The FFT is still easy to use, and it you want a higher frequency resolution (not higher max frequency), you can zero pad your signal and get higher frequency resolution.
Zero-padding gives you a smoother curve, i.e., more points to look at. But it does not add new peaks. So, if you have two very close frequencies that produce a single peak in the DFT (w/o zero-padding), you would not get two peaks after zero-padding. In the field, were I work, resolution is understood as the minimum distance between two frequencies such that you are able to detect them individually (and not as a single frequency).
Zero-padding helps you to find the true position (frequency) of a peak in the DFT-spectrum. So, your frequency estimates can get better.
However, the peaks of a DFT are the summits of hills that are usually much wider than compared to other techniques (like Capon or MUSIC) whose spectra tend to have much narrower hills. Zero-padding does not increase the sharpness of these hills (does not make them narrower).
Likewise the DFT tends to be more noisy in the frequency domain compared to other techniques which could lead to false detections (e.g. with a CFAR variant).
Statistical algorithms always make more concrete assumptions of the signal. DFT / Fourier transforms are great as they are a direct mathematical operation, that maps neatly to (basic) equations. There's a lot you can do, and easily grok, with FTs. Once you get statistical, a lot of things are harder :)
If you want pure performance, and understand the underlying statistical processes, then sure I totally agree with you.
I consider myself to be a slow-thinker too. I have several above-average people as friends. New stuff (usually some mathematical topic) that takes me a whole day to internalize the basics, I can tell to them in 15 minutes and they will be able to understand it and to immediately connect it with other topics they know.
I have not attended a special school for mathematically gifted like some of them. In school and during my first year at the university, I used to think that I am just intelligent enough to have an idea how true intellegent one could be...
I was always bad at solving equations with more than 3 unknowns, since this includes enough steps to have a significant probability that I forget a sign or mix something up - even though the algorithm itself was completely clear to me.
Today I acceppted myself much more: I think my real advantages are that I am a) interested in a lot of things and b) I am enduring in reading about a topic. Even if I need to read explanations of 5 different authors to grasp something, I do so. And I care much less today than ealier. However, I still like to be faster at times.
While I think I am a decent programmer/SWE, I do not like pair programming. My path of coding is not linear and most of the stuff I type will be erased until I am confident about my solution.
I liked my job at the university - independent of the final PhD. I enjoyed what I was doing. Most of the time I also enjoyed writing my dissertation, since I was given the opportunity to write about my stuff. And mostly I could write it in a way how I felt things are supposed to be explained.
reply