全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
1868 0
2020-11-20
在mata中,我用下述代码生成了一个1行2列的随机行向量。我想要验证它是否在设置的解空间内,于是用if-else语句进行判断。其中x_lb是下界,x_ub是上界。注意在(x_new > x_lb)比较中,是这两个行向量对应位置的每一个值都满足>关系才返回1 。因而在这种情况下,if(x_new > x_lb返回1时),我无需做任何修改,而在else之下才需要修改。请问为什么会报错“'if' found where almost anything else expected“呢?

代码如下:
mata:      
T      = 1000         
x_lb    = J(1,2,-15)         //(解空间的下界)
x_ub    = J(1,2,25)          //(解空间的上界)
o       = uniform(1,1)       //(生成一个随机数,注意mata中1行1列的矩阵是标量)
randomm = uniform(1,2)       //(生成一个随机行向量,用于生成初始解)
a       = randomm*randomm'           //求(a_1^2+a_2^2+a_3^2+···)
z       = randomm/sqrt(a)            //(用于生成初始解)
x00     = x_lb + (x_ub - x_lb) * o   //(用于生成初始解)
x_new   = x00 + T*z                  //(生成初始解)
*---------------------------------------------------*
///比较初始解是否位于解空间下界之上                              if(x_new > x_lb){              
        x_new = x_new
                        }
else {
        x_new = o*x_lb + (1-o)*x00
                        }       
*---------------------------------------------------*
///比较初始解是否位于解空间上界之下                        if(x_new < x_ub){                  
                        x_new = x_new
                        }
else {
                        x_new = o*x_ub + (1-o)*x00
                        }
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群