matlab tips and tricks and ...

page overview:

I created this page as a vectorization helper but it grew to become my annotated Matlab reading cache. In order to motivate the DSP people out there, I am showing below how one can apply a window and scale factors on a pre-framed signal using no loops and minimal memory.

% For framing use buffer() or your own favorite
% Frame length: 256, Number of frames: 10000
X = randn(256,10000);

% Make a window (same for each frame)
w = hamming(256);
W = diag(sparse(w));

% This is the windowed signal, without loops
XW = W * X;

% Make a vector of random gain factors (one per frame)
g  = rand(10000,1);
G  = diag(sparse(g))

% Now lets scale each frame by the corresponding gain factor
XG = X * G;

% Windowing and gain scaling is just left and right product with a diagonal.
XWG = W * X * G;

local links:

Note that some of the following documents are taken off of Mathworks' own support site; more specifically take a look at the technical notes section.  Also a very good source of information is comp.soft-sys.matlab