выбор элементов из матрицы на основе значений нескольких диапазонов

#matlab

#matlab

Вопрос:

 a = 1:20;
b = [2,5;12,16];
 

Я ищу способ извлечения элементов в a пределах диапазона b строк. Я пытался

 bsxfun(@(col1,col2) a(col1:col2), b(:,1), b(:,2))
 

но это игнорирует все, кроме первой строки b .

Это результат, который я ожидаю

 2 3 4 5 12 13 14 15 16
 

Ответ №1:

Эта bsxfun функция использует значения, определенные в каждой соответствующей строке a , для создания двух разных векторов и их объединения.

 a = 1:20;
b = [2,5;12,16];

Range_1 = b(1,:); 
Range_2 = b(2,:);

bsxfun(@(Row_1,Row_2) [a(Row_1(1):Row_1(2)) a(Row_2(1):Row_2(2))], Range_1, Range_2)