TL; DR Python отличается, вы можете сделать Python как Matlab, в этом случае я предпочитаю подход Python.
In Python xx>0.002
- это массив логических значений, False
и True
и np.diff
обрабатывают логические значения как таковые, в Matlab xx>0.002
также представляет собой матрицу логических значений, но diff
преобразует их в 0
и 1
, прежде чем принимать различия, и это подразумевает, что у нас есть больше возможностей в Matlab
In [15]: for a, b in ((0,0), (0,1), (1,0), (1,1)): print(np.diff((a,b)))
[0]
[1]
[-1]
[0]
In [16]: f, t = False, True
...: for a, b in ((f,f), (f,t), (t,f), (t,t)): print(np.diff((a,b)))
[False]
[ True]
[ True]
[False]
Когда я строю xx
и diff(xx>0.02)
в Matlab (о, хорошо, в Октаве ... ) У меня есть
Когда я строю xx
и np.diff(xx>0.02)
в Python + Numpy + Matplotlib, я получаю
Чтобы иметь точно результаты Matlab, мы можем преобразовать логический массив в массив чисел с плавающей точкой, просто умножив на 1.0
, все в порядке - так что это график xx
и np.diff( 1.0*(xx>0.02) )
Если целью ОП является показать, где сигнал больше 0.02
I смею сказать, что родной Python (без преобразования в float) лучше ...