2016-11-22 3 views
0

をmatplotlibのが、エラーはPython3.5、pyaudioにおける洞発電機を視覚化し、numpyの、私は副鼻腔ジェネレータを視覚化しようとしています

ValueError: x and y must have same first dimension

を取得する私は、寸法が同じであったと思ったが、明らかにそうではありません。 洞・ジェネレータは、私はmatplotlibのを追加しましたが、仕事を得ることができなかったために

import pyaudio 
import numpy as np 

p = pyaudio.PyAudio() 

volume = 0.08  # range [0.0, 1.0] 
fs = 192000  # sampling rate, Hz, must be integer 
duration = 3.0 # in seconds, may be float 
f = 257.0  # sine frequency, Hz, may be float 
f2 = 258.0 
f3 = 300.0 
f4 = 301.0 

oma = 2000.0 

a = (np.sin(2*np.pi*np.arange(fs*duration)*f/fs)).astype(np.float32) 
b = (np.sin(2*np.pi*np.arange(fs*duration)*f2/fs)).astype(np.float32) 
c = (np.sin(2*np.pi*np.arange(fs*duration)*f3/fs)).astype(np.float32) 
d = (np.sin(2*np.pi*np.arange(fs*duration)*f4/fs)).astype(np.float32) 

om = (np.sin(2*np.pi*np.arange(fs*duration)*oma/fs)).astype(np.float32) 

# generate samples, note conversion to float32 array 
samples = om*(a+b+c+d) 


# for paFloat32 sample values must be in range [-1.0, 1.0] 
stream = p.open(format=pyaudio.paFloat32, 
       channels=2, 
       rate=fs, 
       output=True) 

# play. May repeat with different volume values (if done interactively) 
stream.write(volume*samples) 

stream.stop_stream() 
stream.close() 

p.terminate() 

標準です。私は0 - 2 * np.piの間隔で個々の波と集合関数の両方を視覚化しようとしています。

オンラインでは解決策がありますが、2つの周波数に制限されています。 Wave interference beat frequency

PLTの最新の反復は、エラーメッセージがplt.plotに渡さxyアレイの寸法に互換性がないことを暗示

import matplotlib.pyplot as plt 
x = np.mgrid[0:2*np.pi] 

plt.rc('lines', linewidth=4) 
plt.plot(samples,x) 
plt.show() 

答えて

0

あります。あなたは

samples.shape 
# (576000,) 

x.shape 
# (7,) 

あり576000個のデータポイントがsamplesであるだけx 7でこれを確認することができます。あなたは、最も可能性の高いノート(あなたがx

x = np.arange(fs*duration)/fs 

ように定義する必要がありますので、次にあなたが

plt.plot(x, samples) 

enter image description here

  1. を使用してデータをプロットすることができ、x軸上の時間が欲しいですそのxが最初に来る)
  2. (x plt.plot(samples)を省略することもできます。 x軸)。
+0

ありがとう、それは明確な答えでした。 –

関連する問題