繁体   English   中英

相同的嘈杂信号,Matlab与Python

[英]Same noisy signal, Matlab vs Python

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

MATLAB中的代码:

Fs = 1e3;               % sampling frequency (in Hz)
L = 1e5;                % signal length (number of samples)
f0 = 0.1*Fs;            % cycle frequency (in Hz)   

x = rand(L, 1);
a = [1 -2*cos(2*pi*.2)*.9 .9^2];
x = filter(1,a,x);
x = x.*(1 + sin(2*pi*(0:L-1)'*f0/Fs));
x = x +std(x)*rand(L,1);
histogram(x,100);

Python程式码:

Fs=10**3
L=10**5
f0=0.1*Fs
x=np.random.normal(0,1,L)
a=[1,-2*np.cos(2*np.pi*.2)*.9,.9**2]
x=sps.lfilter([1],a,x)
Random_modulated_signal=x*(1+np.sin(2*np.pi*np.arange(0,L)*f0/Fs))
Rms_Whitenoise=x+np.std(x)*np.random.normal(0,1,L)
plt.hist(Rms_Whitenoise,bins=100,edgecolor='k')
plt.show()

如果我绘制两个信号的直方图,则它们不会共享相同的行为。 当我加上std(x)*rnd(L,1)时,信号会有所不同。

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

请有人可以澄清我在做什么错吗?

两个信号的直方图 两个信号的直方图

Matlab的rand是均匀随机分布,而不是正态分布。 相当于numpy.random.normal在MATLAB是randn matlab rand的numpy等效项是numpy.random.random

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM