楼主: 严玺之
1867 0

[编程问题求助] 请问如何解决mata中报错:“'if' found where almost anything else expected“ [推广有奖]

  • 0关注
  • 0粉丝

高中生

77%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0.4500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
70 点
帖子
3
精华
0
在线时间
70 小时
注册时间
2020-3-18
最后登录
2025-8-19

楼主
严玺之 发表于 2020-11-20 21:44:25 来自手机 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
在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
                        }
二维码

扫码加我 拉你入群

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

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

关键词:Expected anything expect almost found

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-2-7 16:25