Создать индексный вектор на основе начальных и конечных значений [дубликаты]

На этот вопрос уже есть ответ здесь:

Эффективный оператор двоеточия для нескольких начальных и конечных точек 4 ответа

Основываясь на матрице, которая содержит несколько строк начала (первый столбец) и конца (второй столбец) интервала индекса, я хотел бы создать вектор всего индекса. Например, еслиA = [2 4; 8 11 ; 12 16]Я хотел бы иметь следующий векторindex = [2 3 4 8 9 10 11 12 13 14 15 16].

Я ищу самый быстрый способ сделать это. На данный момент я нашел только две возможности:

1) с петлей

index = [];
for n = 1:size(A, 1)
    index = [index A(n, 1):A(n, 2)];
end

2) сarrayfun

index = cell2mat(arrayfun(@(n) A(n, 1):A(n, 2), 1:size(A, 1), 'uni', 0));

Что интересно,arrayfun намного быстрее, чем версия цикла, и я не знаю почему. Плюс я использую преобразование из клетки в мат, так что это странно. Что ты об этом думаешь? У вас есть другие предложения?

Спасибо за вашу помощь

Ответы на вопрос(2)

Ваш ответ на вопрос