2016-03-14 71 views
1

我有一個矩陣指數,讓我們這樣說MATLAB如何得到最小值及其矩陣

A=[1 3 6 2 0 4 
    6 8 9 5 1 4 
    7 2 7 8 9 2] 

我想在行給出的最低值(r)和列在間隔([c.. c+x])。另外我想索引(它的列數)。 我可以得到分鐘,

MinVal=min(A(r,c:c+x)) 

MinVal=min(A(2,3:3+2)) 

會給我

% MinVal= 1 

這個MINVAL的指數是I= 5,因爲它是在第5列(我已經知道該行並不需要它)。

但是如何得到這個索引?

如果我不喜歡這個,我沒有得到我想要的

[MinVal,I]=min(A(r,c:c+x)) 
+1

順便說一句,在我的價值不符合行和列的數量的總和,它是列數,其中的最小值是,對我來說,它返回3,這是在子文件中的位置1 –

+0

是的我犯了一個錯誤,我改變了它。是的,但我想要整個矩陣中的位置而不是子矩陣。我希望它給出5這個例子不是3. –

+2

'[MinVal,I] = min(A(r,c:c + x))'和'I + =(c-1)'應該這樣做。 。? (是的,我的matlab太生鏽了,無法將兩個表達式合併爲一個) –

回答

0

它可能不是最短的代碼,而是一個很容易理解的可能性:

創建遮罩指示哪些變量你在你的小矩陣使用方法:

M=false(size(A)); 
M(r,c:c+x)=true; %use the same indexing operation 

轉換爲線性指標:

M=find(M); 

並用它來我在全矩陣轉換成指數:

M(I) 
相關問題