同样的噪声信号,Matlab vs Python

同样的噪声信号,Matlab vs Python,python,matlab,signals,Python,Matlab,Signals,我试图用python从Matlab中的代码中获得类似的信号 MATLAB中的代码: Fs=1e3;%采样频率(单位:Hz) L=1e5;%信号长度(样本数) f0=0.1*Fs;%循环频率(单位:Hz) x=兰特(L,1); a=[1-2*cos(2*pi*.2)*.9^2]; x=过滤器(1,a,x); x=x.*(1+sin(2*pi*(0:L-1)'*f0/Fs)); x=x+std(x)*rand(L,1); 直方图(x100); Python代码: Fs=10**3 L=10*5 f

我试图用python从Matlab中的代码中获得类似的信号

MATLAB中的代码:

Fs=1e3;%采样频率(单位:Hz)
L=1e5;%信号长度(样本数)
f0=0.1*Fs;%循环频率(单位:Hz)
x=兰特(L,1);
a=[1-2*cos(2*pi*.2)*.9^2];
x=过滤器(1,a,x);
x=x.*(1+sin(2*pi*(0:L-1)'*f0/Fs));
x=x+std(x)*rand(L,1);
直方图(x100);
Python代码:

Fs=10**3
L=10*5
f0=0.1*Fs
x=np.随机.正态(0,1,L)
a=[1,-2*np.cos(2*np.pi*.2)*.9,.9**2]
x=sps.lfilter([1],a,x)
随机调制信号=x*(1+np.sin(2*np.pi*np.arange(0,L)*f0/Fs))
均方根白噪声=x+np.std(x)*np.random.normal(0,1,L)
plt.hist(Rms_白噪声,箱柜=100,edgecolor='k')
plt.show()
如果我绘制两个信号的柱状图,它们的行为并不相同。当我添加
std(x)*rnd(L,1)
时,信号不同

奇怪的是,我使用了与前面所示相同的代码,但没有使用正态分布,而是使用了
rand('twister',2)
np.random.seed(2)
在这两个程序中生成相同的值,并且成功了

请有人澄清我做错了什么

两种信号的直方图

Matlab的
rand
是均匀随机分布,而不是正态分布。matlab中
numpy.random.normal
的等价物是
randn
。matlab的
rand
的numpy等价物是
numpy.random.random

这些直方图是什么?左MATLAB,右Python?你希望两个人看起来都像右手边的那个?