Разрешение SymPy Plot - PullRequest
       15

Разрешение SymPy Plot

0 голосов
/ 31 января 2019

Я только недавно начал изучать Python (Платформа: Python 3.7) для своего класса обработки сигналов и коммуникации, и до сих пор это было здорово.Однако у меня возникают проблемы с воспроизведением такого же качества разрешения, которое достигается с помощью MatPlotLib и linspace (показано в коде ниже) при использовании библиотеки SymPy.Мне было интересно, есть ли способ достичь того же разрешения?

Я понимаю, что SymPy работает с библиотекой MatPlotLib на внутреннем сервере, но ограничен в том, насколько он фактически используется.Я попытался добавить частоту дискретизации к ограничениям во временной области в вызове sym.plot, как вы можете сделать с linspace, но это не работает.Можно ли в любом случае вызвать функцию linspace перед построением графика, чтобы улучшить разрешение графика или даже без использования linspace?

Шаг 1 показывает необходимые графики, используя MatPlotLib.На шаге 2 показан код, который я пытаюсь разработать для получения тех же результатов, но качество формы сигнала далеко не такое же, как на шаге 1.

import sympy as sym
import matplotlib.pyplot as plt
import numpy as np

# Step 1 & Section Identifiers
fc, fm = 10**9,10**6
wc, wm, Ac, Am = 2*np.pi*fc, 2*np.pi*fm, 8, 2


# Carrier Signal Plot
t = np.linspace(0, 5/fc, 500)
ct = Ac*np.cos(wc*t)
plt.xlabel('Time')
plt.ylabel('c(t)')
plt.plot(t,ct)
plt.show()

# Step 2 & Section Identifiers
t = sym.Symbol('t')
fc, fm = 10**7, 10**4
wc, wm = 2*sym.pi*fc, 2*sym.pi*fm

# Carrier Plot
ct = Ac*sym.cos(wc*t)
sym.plot(ct, (t, 0, 5/fc), ylabel = "C(t)")

Редактировать Я нашелчтобы я мог отключить адаптивную выборку и вручную указать количество точек данных, чтобы сгладить сигнал.Я добавил отредактированные строки, необходимые для показа этого!

sym.plot(ct, (t, 0, 5/fc), ylabel = "C(t)", adaptive = False, nb_of_points = 500)
...