Я не уверен, есть ли способ сделать это без цикла, так как это довольно непонятная операция, которую мы выполняем.Если я правильно понимаю ваш алгоритм, вот два метода, которые используют один цикл for
:
B = zeros(sum(A(:,2)), 2);
counter = 1;
for i = 1:size(A,2)
n = A(i,2);
B(counter:counter+n-1,1) = A(i,1)+(0:n-1)';
B(counter:counter+n-1,2) = n;
counter = counter+n;
end
Вы можете покончить с предварительным распределением.Если переменная counter
сбивает с толку, вы можете проверить эту переменную, которая добавляет матрицу B к каждой итерации, но вместо этого требуется начальный регистр.
n = A(1,2);
B = [A(1,1)+(0:n-1)', n*ones(n,1)];
for i = 2:size(A,2)
n = A(i,2);
B = [B; A(i,1)+(0:n-1)', n*ones(n,1)];
end