If you’ve taken any digital signal processing classes at a college or university, you’ve probably been exposed to MATLAB. However, if you want to do your own work, you might think about Linux and one of the many scientific computing applications available for it.
[David Duarte] recently published a three-part tutorial on using Octave to do scientific audio processing. The first part covers basic reading, writing, and playing of audio files. Part two covers synthesis of signals, plotting, and some basic transformations. Modulation is the topic of the third part. If you prefer your tutorials on video, you can check out the video below.
We’ve talked about MATLAB before in the context of message cracking. Then again, some of the best signal processing is done by humans. If you don’t like Octave, you might try Scilab, another Linux package that is similar. There’s also Freemat, Sage, and Spyder. Of course, you can also run MATLAB under Linux.
Python users on Linux can look at SciPy and NumPy and work interactively in developing an algorithm or process using iPython Notebook. There are plenty of videos and blogs to choose from. (Use Python virtualization and set up a Python3.5 to use the cool newer features).
:)
Why do I get the impression from the write-up that the only easily-conceivable combinations would be Linux+Octave or Win+Matlab. The last 14 years I’ve been using professionally the combination Linux+Matlab (and the installation is nowadays identical to Win-version, so no magic there) and privately Win+Octave. Most of the things work in Octave just the way they work in Matlab. For me the benefit of Matlab/Octave over Python-based solutions is how easy debugging is, since during algorithmic development that’s what you do a lot. For real-world deployment etc. Python could be more suitable.
I used Matlab in college and loved it until I got out of college and realized how much it costs. I switched to python and haven’t once thought it was missing something Matlab has. If you use a good IDE like PyCharm, the debugging just as good as Matlab.
I use both and prefer python with the spicy package. Octave is great if there is something on the web that works in matlab and you don’t want to rewrite it (some minor tweaks may be required though as not all functions are available). I have found the spicy/numpy implementations to generally be faster when working with large datasets by 10x or more. YMMV.
Developing in Spyder or iPython makes it as easy as getting the command figured out, making sure results are correct, then copy/paste over to your main program.
How do you deal with multi-level tables (new matlab) or structs for highly indexed or organized structures in python? I have not found a good alternative other than multiple objects that use a common index.
Would be nice to see a similar tutorial using julia instead!
Link:
http://julialang.org/
There, that wasn’t so hard – was it?
Octave has a windows package that works very well. Also you can download many add in packages to expand Octave from the Octave Forge page. Scilab also works well although the documentation is not is well developed as it is translated from another language.
And a plug for Freemat when you want to do simpler calculations. It loads very quickly. I use it in place of excel now for most basic calculations.
I like a version of Octave called Octave UPM. It’s developed by a spanish university and it has some fancy stuff normal Octave doesn’t have.
Neat, I was familiar with R and not Octave as an open source alternative to MATLAB. I’m thinking from the Maple and Mathematica background the math network turned me on to. I recall a gal who worked on flight simulators turning me on to an “m code” that wasn’t really g code or the MATLAB m code though I never really investigated to use. I just looked and am not finding a reference regarding that I recall reviewing… though see there is a p code now the military is using.
Interesting reading I found here comparing Octave and MATLAB: https://en.wikibooks.org/wiki/MATLAB_Programming/Differences_between_Octave_and_MATLAB
If I can find the time to program, Octave will be interesting to learn and work with. I thought MATLAB was great other than my inclinations for preferring C or C++ due to like Java, the MCR translator slowing down processing. Early versions of MATLAB could compile the MATLAB code into C though the versions I worked with could not.
I wonder if Octave has a C compiler that doesn’t require a MCR wrapper like processing?