2015-09-10 10 views
2

мне нужно реализовать фильтрMatlab длинный формат в питона

EDA_T = signal.lfilter(b, a, edat); 

в питона с Коэффициент:

a=np.array([1, -1.994372768943081, 0.99438855043802943], type=np.float64);  
b=np.array([1, 1.9, 1.7])/3e5; 

важно принимать все десятичное число. с указанным типом массива являются:

print('a, b: ', a, b) 
a, b: [ 1.   -1.99437277 0.99438855] [ 3.33333333e-06  6.33333333e-06 5.66666667e-06] 

некоторое число являются вырезанные. В Matlab, определяющем формат, долго не возникает никаких проблем. Как это реализовать в python?

+0

Вы можете ввести [1] и убедиться, что номер правильный. – hellpanderrr

+2

Чтобы убедиться, что числа не отрезаны, вы можете заставить python представлять их с требуемым количеством цифр 'formatat (x, '.17f')' – Psytho

ответ

2

Это ошибка представления, думаю. сегодня большинство машин используют поплавки IEEE-754, и их использование должно быть взаимозаменяемым. Итак, в вашей ситуации проблема состоит в том, что представление усечено или это значение изменилось. Первый не повлияет на ваши расчеты, но последний будет. Вы можете посмотреть больше десятичных знаков, напечатав его как строку и указав количество десятичных знаков. Для фактической, хорошей точности используйте десятичный тип данных. https://docs.python.org/2/library/decimal.html

Смежные вопросы