2017-01-28 26 views
0

有人可以向我解釋這裏發生了什麼?Matlab - 澄清

yMatrix = eye(num_labels)(y,:) 

我在一個作業的答案中看到了這個,但我無法谷歌答案。我真的很感激任何反饋。

+1

這是一個語法錯誤。 '(y,:)'只有在索引到一個矩陣中才有意義,你不在這裏。 – rayryeng

+1

這可以運行在八度,但禁止在MATLAB – rahnema1

回答

2

正如評論中所述,在MATLAB中,您發佈的代碼是語法錯誤。然而,在八度,它的工作。

如果我們將它分成兩行(這是在MATLAB中運行所需的),看看會發生什麼更容易一些。

% Creates an identity matrix (ones along the diagonal) that is [num_labels x num_labels] 
I = eye(num_labels); 

% Retrieve the y'th row (and all columns) and store in a matrix yMatrix 
yMatrix = I(y,:); 

在MATLAB中,你將索引與它以前y需要這個中間變量。在Octave中,您可以立即索引函數的結果,代之以​​

+0

這裏有一些額外的信息: num_labels = 10; y是一個向量(5000 x 1) 它仍然執行相同的事情嗎? – blackknight316

+1

@ blackknight316是的。它創建一個10x10矩陣,並抓取與'y'中每個元素相對應的行。所以如果'y'是'[1 1 2 3]',它將返回由識別矩陣的行'1','1','2'和'3'組成的4 x 10矩陣。 – Suever