找到条件的最小矩阵数

时间:2017-03-09 04:47:29

标签: matlab

我想找到一个表示A的矩阵的最小值。我可以这样做:

NM = find(A==min(A));

但我需要A的最小数组,对于它,c(NM)不为零。我怎样才能把这个条件放在找到最小值?

示例:

c=[0,18,9,0,100,0]; 
A=[1,189,125,25,7,1];

我exxt它返回5.

2 个答案:

答案 0 :(得分:2)

您可以使用逻辑indexingfind所需的元素。

godoc --http :6060

说明:

使用逻辑索引,首先会找到非零的c元素索引。

find(A==min(A(c~=0)))

然后提取idx1 = c~=0; 的与A的非零元素索引相对应的元素。

c

然后我们找到最少的提取元素:

A1 = A(idx1);

我们再次使用逻辑索引来查找等于其最小值的A元素。

mn = min(A1);

最后使用idx2 = A == mn; 逻辑索引find转换为线性索引。

idx2

答案 1 :(得分:0)

首先将矩阵转换为矢量(否则矩阵的最小值会引起混淆,这可能意味着每列的最小值。)

然后您可以对Vector进行排序并获取索引

c = c(idx);

然后,您可以使用索引对矢量c进行排序

c = c(c~=0);    
result = c(1);

最后获得c:

的第一个非零元素
echo "welcome"."<pre>".$output."</pre>";