0

我的目的不是找出最大值是多少,而是找出当为行的整个列元素生成不同的随机数〜N时出现最大值的列号(S)。

这里的一个潜在问题是,如果同一行中的两个或多个元素包含相同的最大值,该怎么办?我知道他们不太可能满足于实数。但是我将第一行中的所有元素都预设为零。因此,在第一轮中,所有值都是最大值,并受制于下一个条件动作。

我希望列号在下一轮循环中进行进一步计算

假设所有矩阵都在 for 循环之前定义好,以节省空间。

Mata:
for (k=1; k<=10; k++){ 
for (j=1; j<=20; i++){ 
A[k,j]= sum[k,j] \ count [1,j]
}
   Choose max A[k,j]
   For that j*   for max A[k,j*] to occur
        {count[1,j*]=count[1, j*+1]
            y= rnormal(1,1,x,5)
            C[k,j*]=y
            sum[k,j*]=sum[k,j*]+c[k,j*]
            }

}

非常感谢你的帮助。

4

2 回答 2

0

我无法理解其中的大部分内容——很多内容似乎与你的问题无关——但如果问题是找到行向量中最大元素的列索引,这里有一种技术:

: y = rnormal(1,10,0,1)

: y
                  1              2              3              4              5
    +----------------------------------------------------------------------------
  1 |   .3660763572    .4824003439   -.4441589685    .4314199623   -1.422563986
    +----------------------------------------------------------------------------
                  6              7              8              9             10
    ----------------------------------------------------------------------------+
 1    -1.226056129     1.18790502   -.4106889581    1.024620896    1.092570732  |
    ----------------------------------------------------------------------------+

: select((1..10), (y :== max(y)))
7

(之后)

我没有试图掌握你正在尝试做的所有事情,但你正在对一种你刚刚开始学习的语言做出非常大胆的断言。

通常,select()将矩阵作为第一个参数。

具体来说,识别矩阵中的最大值是没有问题的。

: y = rnormal(5,5,0,1)

: max(y)
2.001071729

: y :== max(y)
        1   2   3   4   5
       +---------------------+
     1 |  0   0   0   0   0  |
     2 |  0   0   0   0   1  |
     3 |  0   0   0   0   0  |
     4 |  0   0   0   0   0  |
     5 |  0   0   0   0   0  |
       +---------------------+

我希望这会有所帮助。

于 2013-04-27T17:05:35.197 回答
0
for (k=2; k<=n; k++){ 
   for (j=1; j<=50; j++){ 
      Ri[k,j]= sumAi[1,j] / count[1,j]
   }      
   Maxj= select((1..50), (Ri[k,]:==max(Ri[k,])))
   count[1,Maxj]=count[1,Maxj]+1
   y= rnormal(1,1,x,5)
   Ai[k,Maxj]=y
   sumAi[1,Maxj]=sumAi[1,Maxj]+y
   Maxj=.
   }
于 2013-04-28T07:05:13.613 回答