MATLAB: Add the rows of a Matrix until a certain value.

sumwhile loop

Hi All, I have this code which will add values in a vector until a certain value and then give the corresponding location. However I would like to modify this so that it would work with a matrix. Here is the current code.
A=[3 4 10 3 9 10 12 4 11 9 11 10]';
sum1=0;
k=1;
while sum1<15
sum1=sum1+A(k);
k=k+1;
end
sum1
k = k-1;
Now the output is sum1=17 and k = 3. If A instead was A=[3 4 10 3 9 10; 12 4 11 9 11 10], then ideally the output would be sum1 = 17 16 and k = 3 2
Any help would be appreciated.

Best Answer

First, a much better way to implement your vector algorithm is to use cumsum amd find:
A = [3 4 10 3 9 10 12 4 11 9 11 10]';
sumA = cumsum(A);
k = find(sumA >= 15, 1)
sum1 = sumA(k)
You can use cumsum on a matrix to sum each row. The difficulty is that find does not work on rows, so you have to use a loop or split the rows into a cell array and use cellfun on that:
A = [3 4 10 3 9 10; 12 4 11 9 11 10];
threshold = 15;
rowsums = num2cell(cumsum(A, 2), 2);
thresholdcol = cellfun(@(row) find(row >= threshold, 1), rowsums)
thresholdsum = cellfun(@(row, k) row(k), rowsums, num2cell(thresholdcol))