/ / Може ли някой да обясни този пример за изтриване на елементи от матрица в MATLAB? - MATLAB, матрица, матрица-индексиране

Може ли някой да обясни този пример за изтриване на елементи от матрица в MATLAB? - MATLAB, матрица, матрица-индексиране

Следният пример се появява в наръчника за MATLAB:

X = [16  2 13;
5  11  8;
9   7 12;
4  14  1]

Използването на единичен индекс изтрива единичен елемент или последователност от елементи и преформулира останалите елементи във вектор на ред. Така:

X(2:2:10) = []

резултати в:

X = [16 9 2 7 13 12 1]

Загадъчно целият 2-ри ред и първите два елемента в 4-ти ред са изтрити, но не мога да видя кореспонденцията между позицията на изтритите елементи и вектора на индекса 2:2:10, Може ли някой да обясни?

Отговори:

12 за отговор № 1

Показаният от вас пример показва линейно индексиране, Когато имате многоизмерни масиви и виедайте му един скалар или вектор, той се индексира по всяка колона от горе до долу и отляво надясно. Ето пример за индексиране във всяко измерение:

mat = [1 4 7; ...
2 5 8; ...
3 6 9];
submat = mat(1:2, 1:2);

submat ще съдържа горния ляв ъгъл на матрицата: [1 4; 2 5], Това е така, защото първото 1:2 в поддирексия има достъп до първото измерение (редове) и вторият 1:2 достъп до второто измерение (колони),извличане на квадрат 2-на-2. Ако не предоставите индекс за всяко измерение, разделен със запетаи, а само един индекс, MATLAB ще индексира в матрицата, сякаш е един голям колонен вектор:

submat = mat(3, 3);     % "Normal" indexing: extracts element "9"
submat = mat(9);        % Linear indexing: also extracts element "9"
submat = mat([1 5 6]);  % Extracts elements "1", "5", and "6"

Вижте MATLAB документация за повече подробности.


0 за отговор № 2

Това е много просто.

Тя основно започва от втория елемент в този пример и отива до десети елемент (колона мъдър) на стъпки от 2 и изтрива съответните елементи. Останалите елементи водят до ред вектор.