Предположим, у меня есть следующие две переменные:Эффективный оператор толстой кишки для нескольких начальных и конечных точек
start_idx = [1 4 7];
end_idx = [2 6 15];
Хочу эффективно (нет для цикла, если это возможно) генерировать одну строку, которая состоит из оператора толстой кишки между соответствующими элементами start_idx
и end_idx
. Для этого примера, это привело бы:
result = [1:2 4:6 7:15];
Поэтому:
results = [1 2 4 5 6 7 8 9 10 11 12 13 14 15];
Способ сделать это должны быть доступны внутри функционального блока MATLAB Simulink в. Большое спасибо!
'out = cell2mat (arrayfun (@ (x, y) [x: y], start_idx, end_idx, 'uniformoutput', false));' – BillBokeey
Действительно ли arrayfun работает быстрее, чем цикл for? –
Не совсем. Каковы размеры ваших векторов 'sart_idx' и' end_idx'? Я считаю, что они должны быть довольно большими для того, чтобы этот кусок кода имел невосполнимое влияние на скорость вашего кода. – BillBokeey