/ / Имам нужда от помощ, за да разбера функциите на Matlab [дубликат] - matlab

Имам нужда от помощ, за да разбера функциите на Matlab [дубликат] - matlab

Може ли някой да ми обясни решението на това упражнение:

Упражнение

Напишете функция, наречена 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 за отговор № 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, тъй като има три колони.