Crie um vetor de índice com base nos valores de início e parada [duplicado]

Esta pergunta já tem uma resposta aqui:

Operador de dois pontos eficiente para vários pontos de partida e chegada 4 respostas

Com base em uma matriz que contém várias linhas do início (primeira coluna) e do final (segunda coluna) de um intervalo de índice, eu gostaria de criar um vetor de todo o índice. Por exemplo, seA = [2 4; 8 11 ; 12 16], Gostaria de ter o seguinte vetorindex = [2 3 4 8 9 10 11 12 13 14 15 16].

Estou procurando a maneira mais rápida de fazer isso. Por enquanto, encontrei apenas duas possibilidades:

1) com um laço

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

2) comarrayfun

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

Curiosamente,arrayfun é muito mais rápido que a versão em loop e não sei por que. Além disso, eu uso uma conversão de célula para tapete, o que é estranho. O que você acha disso? Você tem outras sugestões?

Thanx por sua ajuda

questionAnswers(2)

yourAnswerToTheQuestion