12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import numpy as np
- def plot_time_domain(axis, time_axis_ns, data, channels) -> None:
- """
- Построение временной зависимости.
-
- axis : matplotlib.axes.Axes
- time_axis_ns: numpy.ndarray (в наносекундах)
- data : 2D-массив [N, num_channels]
- channels : список названий каналов, например ["Channel A", "Channel B"]
- """
- axis.clear()
- for idx, label in enumerate(channels):
- y = data[:, idx]
- axis.plot(time_axis_ns, y, label=label)
- axis.set_xlabel("Time (ns)")
- axis.set_ylabel("Amplitude (V)")
- axis.legend(loc="best")
- axis.grid(True)
- axis.figure.canvas.draw()
- def plot_spectrum(axis, frequency, data, channels, middle_frequency) -> None:
- """
- Построение спектра.
- frequency (MHz), data.shape = (N, num_channels)
- channels — список названий каналов (["Channel A", "Channel B", ...])
- middle_frequency (MHz) — центральная частота для отметки
- """
- axis.clear()
- for idx, label in enumerate(channels):
- y = data[:, idx]
- Y = np.fft.fft(y)
- spectrum = np.abs(Y)
- axis.plot(frequency, spectrum, label=label)
- if middle_frequency != 0.0:
- axis.axvline(x=middle_frequency, color='red', linestyle='--', label="Center Freq")
- axis.set_xlabel("Frequency (MHz)")
- axis.set_ylabel("Magnitude (r.u.)")
- axis.legend(loc="best")
- axis.grid(True)
- axis.figure.canvas.draw()
- def plot_demodulated_time_domain(ax, time_ns, demod_data, selected_channels) -> None:
- """
- Отрисовка демодулированного сигнала (I-компонент).
-
- ax : matplotlib.axes.Axes
- time_ns : вектор времени (нс) после децимации
- demod_data : комплексный массив [N, num_channels], где каждая колонка — выбранный канал
- selected_channels : список названий каналов, например ["Channel A", "Channel C", ...]
- """
- ax.clear()
- for idx, ch_label in enumerate(selected_channels):
- y_i = np.real(demod_data[:, idx])
- ax.plot(time_ns, y_i, label=f"{ch_label} (I)")
- ax.set_xlabel("Time after decimation (ns)")
- ax.set_ylabel("Amplitude (V)")
- ax.legend(loc="best")
- ax.grid(True)
- ax.figure.canvas.draw()
|