Как построить волну PCM, используя двоичные входы из файла .txt - PullRequest
1 голос
/ 16 марта 2020

В моем случае у меня будет файл PCM.txt, который содержит двоичное представление данных PCM, как показано ниже.

[1. 1. 0. 1. 0. 1. 1. 1. 1. 1. 0. 1. 1. 1. 1. 1. 1. 1. 1. 0. 1. 1. 1. 0. 1. 0. 1. 0. 1. 0. 0. 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 1. 0. 1. 0. 1. 0. 1. 0. 1. 1. 1. 1. 1. 0. 1. 1. 1. 1. 1. 1. 1. 1. 0. 1. 1. 1. 0. 1. 0. 1. 0. 1. 0. 0. 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 1. 0. 1.]

1 означает двоичный 1

0 означает двоичный 0

Это всего лишь 100 выборок данных.

  1. Можно ли реализовать код python, который будет считывать этот PCM.txt в качестве ввода и отображать эти данные PCM с помощью matplotlib. ? Не могли бы вы дать мне несколько советов по реализации этого сценария?
  2. Будет ли эта построенная фигура выглядеть как прямоугольная волна?

1 Ответ

0 голосов
/ 16 марта 2020

Я думаю, вы хотите это:

import matplotlib.pyplot as plt 
import numpy as np

x = np.arange(100)
y = [1.,1.,0.,1.,0.,1.,1.,1.,1.,1.,0.,1.,1.,1.,1.,1.,1.,1.,0.,1.,1.,1.,0.,1.,0.,1.,0.,1.,0.,0.,1.,0.,0.,0.,0.,0.,1.,0.,0.,0.,0.,0,0.,0.,1.,0.,0.,1.,0.,1.,0.,1.,0.,1.,0.,1.,1.,1.,1.,1.,0.,1.,1.,1.,1.,1.,1.,1.,0.,1.,1.,1.,0.,1.,0.,1.,0.,1.,0.,0.,1.,0.,0.,0.,0.,0.,1.,0.,0.,0.,0.,0.,0.,0.,1.,0.,0.,1.,0.,1.]

plt.step(x, y)
plt.show() 

enter image description here

Если у вас возникли проблемы с чтением файла, вы можете просто использовать регулярное выражение, чтобы найти вещи, которые выглядят как числа:

import matplotlib.pyplot as plt 
import numpy as np
import re

# Slurp entire file
with open('data') as f:
    s = f.read()

# Set y to anything that looks like a number
y = re.findall(r'[0-9.]+', s)

# Set x according to number of samples found
x = np.arange(len(y))

# Plot that thing
plt.step(x, y)
plt.show() 

Ключевые слова : Python, PCM, сигнал PCM, сюжет, Matplotlib, регулярное выражение.

...