MATLAB: Delete last n1,n2,n3 (…) elements in each row in a Matrix in an efficient way or set to zero

cell arraycell2matdeleteefficientlast elementloopmatrix manipulation

I've a large set of data and i want to remove from the end of each row a different amount of elements (0-n). Is there a fast way to do this without using a loop?
As an example: A= % In reality different numbers, not only ones!
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
Then I've a vector saying how many elements to delete from each row, e.g.:
B =
1 3 0 2 1
So the result would look like:
A2
1 1 1 1 0
1 1 0 0 0
1 1 1 1 1
1 1 1 0 0
1 1 1 1 0
Thanks so much in advance!

Best Answer

[m,n] = size(A);
p = cumsum(accumarray([(1:m)',n+1-B'],1,[m,n+1]),2);
A(p(:,1:n)==1) = 0;