2016-03-14 62 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)