我是Mata的新手,我正在尝试学习如何使用函数。
我的代码如下:
mata:
function foo()
{
Y = X'
}
end
input x1 y1 z1
223 676 457 787
913 743 346 890
546 876 123 105
end
putmata X=(x1 y1 z1)
mata: Y=foo()
getmata (x2 y2 z2)=Y
有人可以告诉我为什么这不起作用吗?
答案 0 :(得分:2)
您的代码有两个问题:
foo
函数缺少用于向其馈送X
的参数。X
被销毁。您需要按以下方式修改功能:
mata:
function foo(a)
{
return(a')
}
end
然后您可以使用X
作为变量获取转置的getmata
:
clear
input x1 y1 z1
223 676 457 787
913 743 346 890
546 876 123 105
end
putmata X = (x1 y1 z1)
mata: Y = foo(X)
getmata (x2 y2 z2) = Y
list
+-----------------------------------+
| x1 y1 z1 x2 y2 z2 |
|-----------------------------------|
1. | 223 676 457 223 913 546 |
2. | 913 743 346 676 743 876 |
3. | 546 876 123 457 346 123 |
+-----------------------------------+