1

我正在尝试在 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

谢谢你的帮助,

斯坦

4

1 回答 1

5

那应该没问题。关键是多维正态随机变量已经是球对称的(各向同性的)。不过,随机角度似乎有点笨拙。我会使用更多randn

vectors = complex(randn(k,n), randn(k,n));

然后继续标准化步骤。这是标准化的矢量化版本:

vectors = bsxfun(@rdivide, vectors, sqrt(sum(vectors.*conj(vectors), 2)));
于 2013-09-18T16:36:16.387 回答