Octave Saves the Day
• Chris Liscio
• Chris Liscio
I have become quite experienced with MATLAB over the years. I have used it both on the job, and in school. During my numerical computation course in school, I decided to purchase a student copy of MATLAB for home(work) use at around $200. It worked both with Windows and Linux. I spent the money because I always had a keen interest in audio signal processing, and I wanted to have a tool that I could use to help me explore the application of signal processing theory. </p> <p> When I moved to the Mac, I was a little concerned about MATLAB being Windows-only. I remembered that the copy worked with Linux on a box I had, and I could simply install the copy on piggy and continue to use it via a remote X session (did I mention how much OSX rules?) the same way I use Eagle's free PCB software. CAD software.1 </p> <p> Fast-forward to a few months ago when I tried installing MATLAB on my Linux box. Let me tell you how much a lack of backwards-compatibility SUCKS! I tried for a good half-day to get all the older shared libraries on my machine to get my copy of MATLAB running. I just couldn't get it going. </p> <p> After giving up, I learned about Octave. Octave is a MATLAB-compatible scientific computing package. It is completely free. I installed it on my Linux box without a hitch, but didn't get to use it much since piggy used to be much slower then. </p> <p> Now fast-forward to yesterday. I was hitting a HUGE brick wall with my measurement system in FuzzMeasure. Measurement quality really sucked, and I had to do some internal analysis. Using Excel helped me realize that I wasn't properly recording enough of the MLS signal to get an accurate result. Unfortunately, Excel can't load all that much data to display/analyze. Furthermore, Excel is pretty slow for these sorts of operations I needed to do (FFTs and such). </p> <p> After some digging, I found that someone released a pre-built Octave package that works natively in OSX (via a gnuplot build that displays through Quartz). I installed Octave and was analyzing my signals MUCH more quickly and efficiently than I did with Excel. After a half an hour, I had the problem pinned down, and a few hours after that I had the issue corrected in FuzzMeasure. </p> <p> I realized that just about every paper/webpage I've read on MLS measurements has confused me on a common, important point.2 Hopefully I can now summarize the method well enough in my FuzzMeasure documentation now that I understand it more clearly. </p> <p> 1Eagle CAD is now available as an OSX-native X11 app </p> <p> 2Potentially brain-busting info here. Read at your own peril! I have often read about how the original MLS signal may be cross-correlated with shifted copies of the measured MLS response to get the impulse response (which itself would be shifted by some seemingly random amount). Unfortunately, what I didn't understand was that "shifted" actually meant "shifted and rotated". So I was naively comparing the MLS signal with a time-shifted (and hence truncated) copy of the recorded signal. This resulted in a horribly distorted impulse and frequency response. Furthermore, I wasn't recognizing the fact that the impulse wasn't going to always show up at the start of the result, and thus my FFT window didn't always catch all (or sometimes any) of the impulse response! Silly me! </p>