Next  |  Prev  |  Up  |  Top  |  JOS Index  |  JOS Pubs  |  JOS Home  |  Search

Inspecting the Output Signal(s) in Matlab or Octave

The faust2octave script, distributed with FAUST, executes shell commands similar to the faust2plot script mentioned above, then executes the generated program to write a matlab input file, and finally loads the file in Octave. The result is typically as if the following commands were typed for the above example:

 > faust -a matlabplot.cpp cpgrir.dsp -o cpgrir.cpp
 > g++ -O3 cpgrir.cpp -o cpgrir
 > cpgrir -n 600 > cpgrir.m
 > octave --persist cpgrir.m
In Octave, the variable faustout is a matrix containing the program output. Each output signal is a column of this matrix. In the above example, we have one output signal that is 600 samples long, so the faustout matrix is a $ 600\times 1$ column vector.

In Octave, an overlay of all output signals can be plotted by the command

  octave:1> plot(faustout);
Very often in signal processing we need to see the spectrum of the signal:
  octave:1> plot(20*log10(abs(fft(faustout,1024))(1:512,:)));
In this example, the signal is zero-padded out to 1024 samples, a Fast Fourier Transform (FFT) is performed, the first 512 samples are selected, the absolute value is taken, followed by conversion to dB, and finally this dB spectral magnitude is plotted. If there are multiple output signals, their dB-magnitude spectra are all plotted overlaid.

Next  |  Prev  |  Up  |  Top  |  JOS Index  |  JOS Pubs  |  JOS Home  |  Search

Download aspf.pdf
[Comment on this page via email]

``Audio Signal Processing in Faust'', by Julius O. Smith III.
Copyright © 2022-05-05 by Julius O. Smith III
Center for Computer Research in Music and Acoustics (CCRMA),   Stanford University