我需要帮助来理解Matlab的功能

时间:2015-10-13 19:32:10

标签: 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因为该函数省略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) ;.

1 个答案:

答案 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创建了一个从nm的数字向量,步长为1.您可以更改此步长添加一个数字:n:x:m,其中x指定您的步数。由于奇数是2分开,只需在最低,正数,奇数,1和步长2开始向量,向量1:2:end中的最后一个元素仅表示“向量的结尾”,因此,如果M = [5x3]行的end为5,因为有五行,而end列将为3,因为有三列。