Date: Nov 13, 2012 4:32 PM
Author: Harry Commin
Subject: Reducing memory requirements for tiled matrices

I need to perform element-by-element multiplication between two "tiled" matrices (i.e. where relatively few unique values are repeated in a structured, tiled manner). However, these matrices (formed by a double Kronecker product) are large and I only have enough memory to process one of them at a time.

Using (x) to denote a Kronecker product, the required operation is:

(ones(1,Ms) (x) F (x) ones(Ns,1)) .* (ones(Nf,1) (x) S (x) ones(1,Mf))

where F is (Nf*N0 x Mf)
and S is (Ns*N0 x Ms)

Is there a computationally efficient way of getting this result? I feel that so few unique values should not need to hog so much memory. I know I can replace ones() (x) A with a repmat() operation, but other than that I'm stumped.