Проблема:
Мне нужно обеспечить точность не менее 15 десятичных знаков. Чтобы подтвердить проблему, я выполнил следующие шаги:
- Сгенерировал синусоидальную волну.
- Рассчитал периодограмму.< /li>
Сравнил результаты LabWindows и Python.
- Когда Python поддерживает высокую точность, результаты сопоставимы.
- Соотношение результатов одинаковое: 1:8 :: LabWindows: Python.
- Когда Python точность ограничена 7 цифрами, значения результирующего массива, превышающие 60 пунктов, отклоняются от этого постоянного соотношения, создавая шум.
Как обеспечить более высокую точность Python (не менее 15 десятичных знаков) в кадрах данных на протяжении всего процесса?
Код Python:
import numpy as np
from scipy.signal import periodogram
N = 256 # Number of samples
t = np.arange(N) # Time array
signal = (np.sin(2 * np.pi * 0.05 * t) +
np.sin(2 * np.pi * 0.1 * t) +
np.sin(2 * np.pi * 0.25 * t))
fs = 1.0 # Sampling frequency
frequencies, spectrum = periodogram(signal, fs=fs, window='hann', scaling='spectrum')
np.savetxt('py_spectrum.txt', spectrum, header='spectrum Data')
Код LabWindows (C):
#define N 256
double t[N], signal[N];
for (int i = 0; i < N; i++)
{
t = i; // Discrete time index
signal = sin(2 * 3.141592 * 0.05 * t) +
sin(2 * 3.141592 * 0.1 * t) +
sin(2 * 3.141592 * 0.25 * t);
}
// Apply Hann Window and calculate Spectrum
HanWin(signal, N);
Spectrum(signal, N);
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... dataframes
Мобильная версия