我试图用matlab中的n个组件生成一组k,随机,单位,复数向量。
我知道确保生成的矢量是各向同性的,可能存在一些问题。会有类似以下的工作吗?
vectors=exp(2i*pi*rand(k,n)).*randn(k,n);
for i=1:k
vectors(i,:)=vectors(i,:)/norm(vectors(i,:);
end
感谢您的帮助,
斯坦
答案 0 :(得分:5)
那应该没问题。关键是多维正态随机变量已经是球对称的(各向同性)。然而,随机角度似乎有点笨重。我只想使用更多randn
:
vectors = complex(randn(k,n), randn(k,n));
然后继续标准化步骤。这是规范化的矢量化版本:
vectors = bsxfun(@rdivide, vectors, sqrt(sum(vectors.*conj(vectors), 2)));