2009-02-21 3 views
1

В следующем примере появляется в учебнике 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] 

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

+0

Упс! Я, вероятно, дал вам больше информации, чем вам было нужно, так как я думал, что вы спрашиваете о части с линейной индексацией, а не в части создания вектора. В любом случае, рад помочь! =) ... и жаль, что этот осел 2pac засорял ваш вопрос. – gnovice

ответ

12

Пример, который вы дали, показывает linear indexing. Когда у вас многомерный массив, и вы даете ему один скаляр или вектор, он индексирует вдоль каждого столбца сверху вниз и слева направо. Вот пример индексации в каждом измерении:

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 documentation Смотрите подробнее ,

+0

В этом случае, конечно, должны были быть удалены только элементы в позициях 2 и 10, но оказалось, что 5 элементов были удалены. –

+1

2: 2: 10 создайте вектор, начиная с номера 2 и перемещаясь с шагом 2 до тех пор, пока номер 10. – gnovice

+0

Я имел в виду «создает» =) – gnovice

0

Это очень просто.

Он в основном начинается со второго элемента в этом примере и доходит до десятого элемента (по столбцу) с шагом 2 и удаляет соответствующие элементы. Остальные элементы приводят к вектору строки.

 Смежные вопросы

  • Нет связанных вопросов^_^