MATLAB: Fast rewrite all values in a large matrix.

optimisation

Now for the purposes of this I'm looking at arrays of sizes(1e+8,50) so obviously very large.
In my code I am pre allocating a zeros matrix called A of data type 'uint8' because I'm not filling the array with numbers greater than 127 or less than 0.
My code rewrites entire columns of this array as such;
idx = [x:y];
%x and y are just two numbers like 1:3 or 5:18
A(1:end,idx) = group;
%group is just an array I have already figured out before hand
Is their a faster way to replace array contents than this, because this takes up the bulk of my run time

Best Answer

A(:, x:y) = group;
is faster than creating the index vector before. See http://www.mathworks.com/matlabcentral/answers/35676-why-not-use-square-brackets. But in your case the overhead of indexing is tiny compared to the real assiging.
The variable requires 5 GB of contiguos memory. Changing the values of all columns will take some time and this cannot be avoided. But the question remains, if it is useful at all to create such a huge redundant data set. Storing the indices and the value in small vectors will be much faster and more efficient. Do you really need this huge matrix?