有人可以向我解释一下这个练习的解决方案:
运动
编写一个名为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因为该函数省略M
的第2行和第4行而忽略了第2列M
的,4,6和8。
解决方案:
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 :(得分: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,因为有三列。