I would not use anything fancy for this, just break down the linear algebra being performed.
C = zeros(n,m);
for k = 1:n
C(k,:) = ((1:n)+k) * B;
end
Or, slightly more verbosely
C = zeros(n,m);
for k = 1:n
A_singleRow = ((1:n)+k);
C(k,:) = A_singleRow* B;
end
For crazy-big sizes (which it sounds like you have), try reformulating the problem so that you can iterate on columns, rather than rows. (Matlab uses column-major matrix storage, which means that elements in the same column are adjacent in memory. Usually thining about this falls into the realm of over-optimization, but maybe not for you.)
For example, you could construct Ctranspose as follows:
Ctranspose = zeros(m,n); %Note reversed order of n, m
Btranspose = B'; %Of course you may want to just create Btranspose first
for k = 1:n
A_singleRowAsColumn = ((1:n)'+k);
Ctranspose(:,k) = Btranspose * A_singleRowAsColumn;
end
The tools arrayfun, cellfun are very useful to functionalize a for loop, which can be used to make code more clear. However they are not generally useful when trying to squeeze performance. Even if the anonymous function/arrayfun implementation was debugged, I suspect it would require roughly the same memory usage.
C = A * Binadequate?