专栏名称: 爬虫俱乐部
Stata技术控,编程技术咨询,数据讨论与分享,编程和实证培训。
目录
相关文章推荐
偶俚张家港  ·  紧急提醒!明早,提前1小时出门… ·  21 小时前  
51好读  ›  专栏  ›  爬虫俱乐部

有问必答——矩阵点除

爬虫俱乐部  · 公众号  ·  · 2018-06-18 14:15

正文

请到「今天看啥」查看全文


可以看到,我们实现了矩阵A每一列的元素分别除以向量B所对应的元素,得到了矩阵C1。

其次,我们也可以实现矩阵与同列向量之间的点除,操作如下:

matrix D=(1\2\3)
matrix C2 = J(3,5,0)
forvalues i = 1/3 {
    forvalues j = 1/5 {
        matrix C2[`i',`j']= A[`i',`j']/D[`i',1]
    }
}
matrix list C2

结果如下:

同样可以看到,我们实现了矩阵A每一行的元素分别除以向量D所对应的元素,得到了矩阵C2。

最后,我们还可以实现同行列矩阵间的点除。操作如下:

matrix E=(1,2,3,4,5\5,4,3,2,1\4,4,3,2,1)
matrix list E
matrix C3 = J(3,5,0)
forvalues i = 1/3 {
    forvalues j = 1/5 {
        matrix C3[`i',`j']= A[`i',`j']/E[`i',`j']
    }
}
matrix list C3

结果如下:

我们同样实现了矩阵A每一行每一列的元素分别除以矩阵E所对应的元素,得到了矩阵C3。

我们注意到上述操作虽然实现了矩阵点除,但是命令语句冗长繁琐。此外,在之前介绍Mata中相关操作的时候,我们就说过Stata在使用矩阵时会占用大量的内存,很多大数据不能利用传统的Stata矩阵命令进行处理,一般是在Mata中进行处理。

其实在往期推文 《矩阵在Mata中的输入和运算》 介绍冒号运算符时,我们就提到过Mata中的矩阵点除。那么,这里我们继续在Mata中使用冒号运算符实现矩阵的点除。

首先,同样生成3行5列的矩阵A和同列数的向量B进行点除:

mata
    A=(5,1,2,3,6 \3,1,8,6,2 \1,2,3,9,8)
    B= (1,2,3,4,5)
    C1 = A :/ B
    C1
end







请到「今天看啥」查看全文