program中定义的矩阵是全域的吗?我通过下面的代码发现program中定义的矩阵似乎是全域的。那么怎样在program中定义局域的矩阵?
代码及运行结果如下:
. mat a=I(3)
. mat list a
symmetric a[3,3]
c1 c2 c3
r1 1
r2 0 1
r3 0 0 1
. mata b=I(5)
. mata b
[symmetric]
1 2 3 4 5
+---------------------+
1 | 1 |
2 | 0 1 |
3 | 0 0 1 |
4 | 0 0 0 1 |
5 | 0 0 0 0 1 |
+---------------------+.
. capture program drop creatmat
. program creatmat
1. args
2. mat a=I(4)
3. mat list a
4. mata b=I(6)
5. mata b
6. end
. creatmat
symmetric a[4,4]
c1 c2 c3 c4
r1 1
r2 0 1
r3 0 0 1
r4 0 0 0 1
[symmetric]
1 2 3 4 5 6
+-------------------------+
1 | 1 |
2 | 0 1 |
3 | 0 0 1 |
4 | 0 0 0 1 |
5 | 0 0 0 0 1 |
6 | 0 0 0 0 0 1 |
+-------------------------+
.
. mat list a
symmetric a[4,4]
c1 c2 c3 c4
r1 1
r2 0 1
r3 0 0 1
r4 0 0 0 1
. mata b
[symmetric]
1 2 3 4 5 6
+-------------------------+
1 | 1 |
2 | 0 1 |
3 | 0 0 1 |
4 | 0 0 0 1 |
5 | 0 0 0 0 1 |
6 | 0 0 0 0 0 1 |
+-------------------------+