Как я могу объединить диапазоны чисел в массив в MATLAB? - PullRequest
1 голос
/ 16 сентября 2010

Например, я хочу объединить два диапазона чисел следующим образом:

1 2 3 4 5 11 12 13 14 15 16 17 18 19 20

Итак, я попробовал:

a = 1:5,11:20

но это не сработало.

Я также хочу сделать это не жестко закодированным способом, чтобы пропущенные 5 элементов могли начинаться с любого индекса.

1 Ответ

5 голосов
/ 16 сентября 2010

Для вашего примера вам нужно использовать квадратные скобки , чтобы объединить два вектора строк:

a = [1:5 11:20];

Или сделать его менее жестким:

startIndex = 6;  %# The starting index of the 5 elements to remove
a = [1:startIndex-1 startIndex+5:20];

Вы также можете проверить следующие связанные функции: HORZCAT , VERTCAT , CAT .

Есть несколько других способов, которыми вы могли бысделай это тоже.Во-первых, вы можете сначала создать весь вектор, затем проиндексировать элементы, которые вам не нужны, и удалить их (т.е. установить для них пустой вектор []):

a = 1:20;      %# The entire vector
a(6:10) = [];  %# Remove the elements in indices 6 through 10

Вы также можете использовать операции набора для этого, например, функция SETDIFF :

a = setdiff(1:20,6:10);  %# Get the values from 1 to 20 not including 6 to 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...