我需要在Python(Spyder)中绘制两个信号。在下面,我已经指出了我的代码需要绘制的信号照片。 (我设法成功绘制了第一个。)
但是,我无法从数组字[1、0、1、0、0、1、0、1、1、1、0、1]绘制平方信号。
有人可以帮我弄清楚如何绘制上述信号吗?
import fft_modules
from fft_modules import *
import numpy as np
from numpy import pi, linspace, sin, cos, array
import matplotlib.pyplot as plt
from scipy import signal
from scipy import *
A=1
f=1000
T=1/f
B=f
Nyquist_Fs=2*B
Fs=100*Nyquist_Fs
Ts=T/10
Tmax=25*T
samples_per_period=T/Ts
total_samples=samples_per_period*(Tmax/T)
print("TS="+str(Ts))
print("T="+str(T))
t = linspace(0, Tmax, total_samples, endpoint=True)
#our_signal = signal.square(A*cos(2*pi*f*t))
our_signal = A*sin(2*pi*f*t)
plt.figure(1)
plt.plot(t,our_signal)
plt.xlabel('Χρόνος (sec) ->')
plt.ylabel ('Πλάτος (V)')
#plt.ylim(-1, 1)
#plt.grid('on')
word = array([1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1])
Samples_per_bit=int(12/Ts)
pliroforia=[]
for i in range(0,len(word)):
table=np.ones(Samples_per_bit)
x=table*word[i]
pliroforia=np.concatenate((pliroforia,x))
plt.figure(2)
plt.plot(t,pliroforia)
plt.xlabel('Χρόνος (sec) ->')
plt.ylabel ('Πλάτος (V)')
答案 0 :(得分:2)
您可以使用matplotlib step函数代替绘图。
import numpy as NP
import pylab as plt
plt.figure(2)
#Padded data with a zero so it looks like your plot.
word = NP.array([0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1])
plt.step(NP.arange(0, len(word)), word)
答案 1 :(得分:0)
简单的解决方案,您可以在其中生成图形的每个点:
%matplotlib inline
import matplotlib.pyplot as plt
word = [1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1]
# for proper scaling
const = 48000
graph_data_x = []
graph_data_y = []
for i in range(len(word)):
graph_data_x.append(i / const)
graph_data_x.append((i + 1) / const)
graph_data_y.append(word[i])
graph_data_y.append(word[i])
plt.plot(graph_data_x, graph_data_y)
完全满足您的需求
答案 2 :(得分:0)
您有两个大小不同的数组。 尝试以下代码:
import fft_modules
from fft_modules import *
import numpy as np
from numpy import pi, linspace, sin, cos, array
import matplotlib.pyplot as plt
from scipy import signal
from scipy import *
A=1
f=1000
T=1/f
B=f
Nyquist_Fs=2*B
Fs=100*Nyquist_Fs
Ts=T/10
Tmax=25*T
samples_per_period=T/Ts
total_samples=samples_per_period*(Tmax/T)
print("TS="+str(Ts))
print("T="+str(T))
t = linspace(0, Tmax, total_samples, endpoint=True)
#our_signal = signal.square(A*cos(2*pi*f*t))
our_signal = A*sin(2*pi*f*t)
plt.figure(1)
plt.plot(t,our_signal)
plt.xlabel('Χρόνος (sec) ->')
plt.ylabel ('Πλάτος (V)')
#plt.ylim(-1, 1)
#plt.grid('on')
word = array([1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1])
Samples_per_bit=int(12/Ts)
pliroforia=[]
for i in range(0,len(word)):
table=np.ones(Samples_per_bit)
x=table*word[i]
pliroforia=np.concatenate((pliroforia,x))
t = linspace(0, Tmax, pliroforia.shape[0], endpoint=True)
plt.figure(2)
plt.plot(t,pliroforia)
plt.xlabel('Χρόνος (sec) ->')
plt.ylabel ('Πλάτος (V)')