在MATLAB中生成随机向量

Phi*_*ias 5 algorithm math matlab signal-processing fft

我正在尝试生成随机频谱,然后用于ifft查找相应的时域向量.

我正在使用以下代码:

for i = 1:64
    randNum = (rand() + 1i * rand())/sqrt(2); % Needs to be normalized by sqrt(2)
    randFreq(i) = randNum;
end

randVec = ifft(randFreq);
Run Code Online (Sandbox Code Playgroud)

请注意,我知道mvnrnd,但由于技术原因,我需要使用for循环并单独生成每个元素.我还需要生成随机频谱然后使用逆变换,我不能在时域中直接生成随机向量.

如果我绘制随机向量(plot(abs(randVec)))的大小,我总是得到这种形式的图形.

在此输入图像描述

总是有一个尖峰,n=0所有其他元素的数量都要小得多.我希望能够深入了解为什么会这样.

我的问题不是在向量Matlab创建随机值的重复,它们是恰好在同一主题上的完全不同的问题.我特别询问我的行为ifft.它也不是我的逆傅立叶变换中尖峰的重复.在那个问题中,峰值可能是由数据的某些特性引起的,但在我的情况下,数据是完全随机的.

Lui*_*ndo 5

生成频率分量的随机值的方式,它们不是关于零对称分布的.具体而言,所获得的实部和虚部具有理想的平均值.5/sqrt(2).实际(样本)平均值将接近平均值.

应用IDFT时,所有频率的平均值对应于时域中的第一个样本.要查看此内容,请在IDFT表达式中设置n = 0 :

                 在此输入图像描述

因此,您在第一个样本处获得更大的绝对值,因为平均过频率大于"应该".

  • @FarhadYusufali`randn`是正常的(0均值),`rand`是统一的(0.5均值).你可能想要`randn` (2认同)