MATLAB: How to repeat a row by a certain factor

repmat

I have this sample matrix:
A=[2 2 2; 3 3 3; 4 4 4];
I would like to multiply each row by a certain factor (in this specific case, the first by 2, the second by 1, and the third by 3) to generate:
A_New= 2 2 2 2 2 2 3 3 3 4 4 4 4 4 4 4 4 4
Does anyone have suggestions on how to do this? I tried:
B = repmat(A,[2 1 3],1)
but this created separate matrices.

Best Answer

  • % Creating sample data
    A=[2 2 2; 3 3 3; 4 4 4];
    nRep=[2,1,3];
    % Constructing A_New as instructed.
    A_new=cell2mat(arrayfun(@(r) repmat(A(r,:),1,nRep(r)), ...
    1:numel(nRep), ...
    'UniformOutput',false));
    % printing the results
    fprintf('A=');
    fprintf('%d ',A_new)
    fprintf('\n');
    Once you run it you get this:
    A=2 2 2 2 2 2 3 3 3 4 4 4 4 4 4 4 4 4