I'm working with a complex array and looking at the covariance matrix and the relation matrix. (The explanation of these matrices can be found here: https://en.wikipedia.org/wiki/Complex_normal_distribution.) When I am compute the covariance matrix using cov(), the matrix looks more like the relation matrix. Consider a toy example:
>> u = [1 + 1i, 2 + 1.5*1i;1 + 2*1i,3+1i;3+1.5*1i,1+1.5*1i]
u =
1.0000 + 1.0000i 2.0000 + 1.5000i
1.0000 + 2.0000i 3.0000 + 1.0000i
3.0000 + 1.5000i 1.0000 + 1.5000i
>> cov(u)
ans =
1.5833 + 0.0000i -1.1250 - 0.0833i
-1.1250 + 0.0833i 1.0833 + 0.0000i
>> 0.5*(u-mean(u))' * (u-mean(u))
ans =
1.5833 + 0.0000i -1.1250 - 0.0833i
-1.1250 + 0.0833i 1.0833 + 0.0000i
>> 0.5*conj((u-mean(u))') * (u-mean(u))
ans =
1.0833 + 0.0000i -0.8750 + 0.4167i
-0.8750 + 0.4167i 0.9167 - 0.5000i
The second method of computing the covariance matrix is basically what MATLAB is doing. However, according to the above Wiki article, this is the relation matrix, not the covariance matrix. The third method of computing the covariance matrix is how MATLAB claims to compute the convariance matrix as can be seen in its Help documentation on cov(). However, the results are clearly different.
So my question is: How does MATLAB actually comput the covariance matrix? I don't think it actually uses the conjugate transpose, but rather only uses the transpose.