2010-04-28 59 views
5

我有,給出了一個矩陣表達,我想訪問一個元素,而無需創建一個臨時變量,像這樣cov(M)(1,1)。我該怎麼做?MATLAB表達式列的索引

謝謝!

回答

4

我有這樣的功能在我的路徑:

getRegion = @(matrix, rows, cols) matrix(rows,cols); 

這樣我就可以撥打:

getRegion(cov(M), 1, 1); 

這也將工作,如果你想要一個更大的區域:

getRegion(cov(M), 1:2, 2); 
+0

不錯的解決方案.. – yassin 2010-04-28 14:11:58

6

有可能使用匿名函數:

>> f11 = @(M) M(1,1); 
>> M = [1 2; 9 4]; 
>> cov(M) 

ans = 

    32  8 
    8  2 

>> f11(cov(M)) 

ans = 

    32 

或爲純粹主義者,這是一個沒有中間變量都:

>> feval(@(M) M(1,1), cov(M)) 

ans = 

    32 
+0

很好的解決方案,但在你的feval聲明考慮改變參數不同的名稱爲清楚起見,「M」。 – Geoff 2010-04-28 14:07:31