2015-10-13 2 views
0

Может кто-нибудь объяснить мне решение этого упражнения:мне нужна помощь, чтобы понять функции Matlab

Упражнение

Напишите функцию с именем odd_index, которая принимает матрицу, M, в качестве входного аргумента и возвращает matrix, которая содержит только элементы M Те, которые находятся в нечетных строках и столбцах. Другими словами, было бы вернуть элементы M в индексах (1,1), (1,3), (1,5), ..., (3,1), (3,3), (3,5) ... и т.д. Это отметить, как строки и столбца элемента должно быть нечетным, чтобы быть включены на выходе. Следующие данные не возвращаются: (1,2), (2,1), (2,2) Потому что либо строка, либо столбец, либо оба четные. В качестве примера, если M Были матрицей 5 на 8, выход должен быть 3-к-4, потому что функция пропускает строки 2 и 4 из M, и она не указана. Также столбцы 2, 4, 6 и 8 M.

Решение:

 M_out = odd_index function (M) 
 M_out = M (1: 2: end, 1: 2: end); 
end 

решение Ссылка: Return only odd elements

Может кто-нибудь объяснить мне, как они пришли к функции M_out = M (1: 2: end, 1: 2: end) ;.

+0

Посмотрите на ответ 10 голосами. Это приведет к объяснению, почему вам нужны «1: 2: конец» для обоих измерений. – rayryeng

ответ

1
function M_out = odd_index (M) 
M_out = M(1: 2: end, 1: 2: end); 
end 

Я принимает каждый нечетное элемент матрицы M и возвращает его в матрицу M_out,

M = [1 2 3; 4 5 6;7 8 9]; 
M_out = odd_index(M) 

M_out = 

    1  3 
    7  9 

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

Хитрость здесь пошагово индексов с шагом 2 вместо 1. M(1,1) дает элемент в верхнем левом углу M, т.е. 1. M(1:2,1) возвращает первые два элемента в левой колонке: 1 и 4. Это происходит потому, что n:m создает вектор чисел от n до m с шагом 1. Вы можете изменить этот размер шага, добавив номер: n:x:m, где x определяет, насколько велики ваши шаги. Поскольку нечетные числа равны 2, просто запустите свой вектор с наименьшим, положительным, нечетным числом, 1 и шагом с размером 2. Последний элемент в вашем векторе 1:2:end просто означает «конец вектора», таким образом, если M = [5x3] строка end строк равна 5, так как существует пять строк, а столбцы end - 3, поскольку имеется три столбца.

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