楼主: lya046
5635 6

求助~ 运行IML代码段出错 [推广有奖]

  • 0关注
  • 0粉丝

高中生

77%

还不是VIP/贵宾

-

威望
0
论坛币
47 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
238 点
帖子
26
精华
0
在线时间
8 小时
注册时间
2009-2-20
最后登录
2010-1-3

楼主
lya046 发表于 2009-6-21 23:46:18 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
运行程序时出现这个错误“ERROR: (execution) Matrix has not been set to a value.”,请问是什么原因呢?谢谢大家了。
代码如下:
proc iml;
use dataset1;
read all into data;
show names;
print data;
start maxFunc(X) global(data);
sum=0;
do i=1 to 10;
U[1]=X[1]*data[i,2]+X[2]*data[i,3];
U[2]=X[1]*data[i,4]+X[2]*data[i,5];
U=U[1]*data[i,6]+U[2]*data[i,7]+X[3]*data[i,8];
sum=sum- log(exp(U[1]-U)+exp(U[2]-U)+exp(X[3]-U));
end;
return(sum);
finish maxFunc;
optn={1 2};
X=J(1,4,0);
call nlpcg(rc,xres,"maxFunc",X,optn);
run;
quit;
二维码

扫码加我 拉你入群

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

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

关键词:EXECUTION dataset RETURN Global finish SAS Error iml

回帖推荐

爱萌 发表于5楼  查看完整内容

我知道了,你的X设置把他们X=J(1,4,0.00001)

本帖被以下文库推荐

沙发
爱萌 发表于 2009-6-22 00:12:46
call nlpcg(rc,xres,"maxFunc",X,optn);该为call nlpcg(xres,rc,"maxFunc",X,optn);
对于这个问题我非常关注,请你把结果及时告诉我谢谢
最恨对我说谎或欺骗我的人

藤椅
lya046 发表于 2009-6-22 09:32:39
2# 爱萌
报一样的错误啊,如下:
283
284  proc iml;
NOTE: IML Ready
285  use dataset1;
286  read all into data;
287  show names;
288  print data;
289  start maxFunc(X) global(data);
290  sum=0;
291  do i=1 to 10;
292      U[1]=X[1]*data[i,2]+X[2]*data[i,3];
293      U[2]=X[1]*data[i,4]+X[2]*data[i,5];
294      U=U[1]*data[i,6]+U[2]*data[i,7]+X[3]*data[i,8];
295      sum=sum- log(exp(U[1]-U)+exp(U[2]-U)+exp(X[3]-U));
296      end;
297      return(sum);
298      finish maxFunc;
NOTE: Module MAXFUNC defined.
299
300      optn={1 2};
301      X=J(1,4,0);
302      call nlpcg(xres,rc,"maxFunc",X,optn);
ERROR: (execution) Matrix has not been set to a value.
operation : [ at line 292 column 6
operands  : U, *LIT1004, _TEM1007
U      0 row       0 col     (type ?, size 0)

*LIT1004      1 row       1 col     (numeric)
         1
_TEM1007      1 row       1 col     (numeric)
         0
statement : ASSIGN at line 292 column 5
traceback : module MAXFUNC at line 292 column 5
ERROR: (execution) Matrix has not been set to a value.
operation : NLPCG at line 302 column 5
operands  : *LIT1027, X, OPTN
*LIT1027      1 row       1 col     (character, size 7)
maxFunc
X      1 row       4 cols    (numeric)
         0         0         0         0
OPTN      1 row       2 cols    (numeric)
         1         2
statement : CALL at line 302 column 5
303      run;
NOTE: Module MAIN is undefined in IML; cannot be RUN.
304      quit;
现在不明白怎么会读不到数据的?

板凳
lya046 发表于 2009-6-22 11:37:47
请问大家,为什么会出现这种错误呢?ERROR: (execution) Matrix has not been set to a value.谢谢。

报纸
爱萌 发表于 2009-6-22 12:13:06
我知道了,你的X设置把他们X=J(1,4,0.00001)
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

最恨对我说谎或欺骗我的人

地板
lya046 发表于 2009-6-22 16:54:08
谢谢爱萌的热心回帖。
我做了一下修改后,程序跑成功了。
对U在maxFunc里面定义,U=J(1,3,0)

7
爱萌 发表于 2009-6-22 16:57:15
呵呵,不客气,因为你的问题方法和问题都非常重要谢谢
最恨对我说谎或欺骗我的人

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 09:41