Цель: применить jupyter/python/matplotlib/<ещё что-то?> к задаче радиотехники.
Дано: 3276799 комплексных числа. Необходимо визуально оценить спектр.
Вот такой тестовый код вешает (!!!) kernel в jupyter-е (попробовал на двух машинах):
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
fig, axis = plt.subplots(nrows=1, figsize=(16, 8))
n = 3276799
t = np.arange(n)
x_t = np.random.random(n) + 1j * np.random.random(n) + np.sin(2 * np.pi * .05 * t)
x_t -= x_t.mean()
x_f = np.fft.fft(x_t)
axis.plot(np.abs(x_f))
Для сравнения вот такой matlab-овский код:
n = 3276799;
t = 1 : n;
x_t = rand(n, 1) + 1j * rand(n, 1) + sin(2 * pi * .05 * t');
x_t = x_t - mean(x_t);
x_f = fft(x_t);
plot(abs(x_f));
отрабатывает и отрисовывает график за доли секунды.
Раунд спора с научруком на тему Matlab vs Jupyter/python/matplotlib был эпично проигран! :'-(
Вопрос: что не так в python-ом коде? Как решить такую задачу в jupyter?
P.S. Только, пожалуйста, не надо говорить, что визуально оценивать 3М точек, это не по фэншую. Если matplotlib для этого не предназначен, то порекомендуйте альтернативу. Решать такую задачу можно и нужно и Matlab её решает успешно.