Може ли някой да ми обясни решението на това упражнение:
Упражнение
Напишете функция, наречена odd_index, която отнема матрица, M
, като входен аргумент и връща матрица, която съдържа само елементи на 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
Решение за връзка: Върнете само странни елементи
Може ли някой да ми обясни как попаднаха на функцията M_out = M (1: 2: end, 1: 2: end) ;.
Отговори:
1 за отговор № 1function 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, тъй като има три колони.