美好的一天,
我一直在摆弄将matlab代码移植到python中,我遇到了这个奇怪的问题.我搜索了一下,但没有发现任何信息表明我做错了什么.
该问题的核心是Matlab的过滤器(b,a,数据)(内置于matlab中)与Python的scipy.signal.lfilter相比产生了不同的输出.
这是在任意粉红噪声信号上执行的问题
我有第三方给我的过滤系数,它们如下:
a0 = 1
a1 = -1.69065929318241
a2 = 0.73248077421585
b0 = 1.53512485958697
b1 = -2.69169618940638
b2 = 1.19839281085285
Run Code Online (Sandbox Code Playgroud)
在matlab中,我按如下方式初始化分子/分母:
a = [a0 a1 a2];
b = [b0 b1 b2];
Run Code Online (Sandbox Code Playgroud)
在python我这样做:
a = np.array([a0, a1, a2])
b = np.array([b0, b1, b2])
Run Code Online (Sandbox Code Playgroud)
在读取matlab/python中的信号后,我打印出前15个样本,以确保你们知道输入是相同的
Matlab的:
0.061920166015625
-0.050170898437500
-0.117370605468750
-0.065979003906250
-0.013854980468750
-0.042663574218750
0.107452392578125
-0.044006347656250
0.115112304687500
-0.043457031250000
-0.028778076171875
-0.128234863281250
0.045227050781250
-0.091796875000000
0.315063476562500
Run Code Online (Sandbox Code Playgroud)
蟒蛇:
[[ 0.06192017]
[-0.0501709 ]
[-0.11737061]
[-0.065979 ]
[-0.01385498]
[-0.04266357]
[ 0.10745239]
[-0.04400635]
[ 0.1151123 ]
[-0.04345703]
[-0.02877808] …Run Code Online (Sandbox Code Playgroud) 我遇到了嵌套for循环这种奇怪的行为,我无法解释这个问题.这是一个特定于python的东西还是我只是在监督某些事情?
这是我正在运行的代码:
for i in range(16):
if i == 0:
for j in range(8):
print 'i is (if) ' + str(i)
i = i + 1
else:
print 'i is (else)' + str(i)
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出:
i is (if) 0
i is (if) 1
i is (if) 2
i is (if) 3
i is (if) 4
i is (if) 5
i is (if) 6
i is (if) 7
i is (else)1
i is (else)2
i is (else)3
i is (else)4
i is …Run Code Online (Sandbox Code Playgroud)