1

여기 내 코드입니다, 그러나python에서 3D 가속도계 파일의 스펙트로 그램을 얻는 방법?

로드 데이터 세트

dataset = np.loadtxt("filename", delimiter=",") 
X = dataset[:,0:5] 
Y = dataset[:,5] 

컴퓨팅 스펙트로

N = 1e5 
amp = 2 * np.sqrt(2) 
noise_power = 0.001 * X/2 
time = np.arange(dataset)/X 
freq = np.linspace(1e3, 2e3, N) 
x = amp * np.sin(2*np.pi*freq*time) 
x += np.random.normal(scale=np.sqrt(noise_power), size=time.shape) 

계산 작업과 스펙트로 그램을 플롯되지 않습니다.

f, t, Sxx = signal.spectrogram(x, X) 
plt.pcolormesh(t, f, Sxx) 
plt.ylabel('Frequency [Hz]') 
plt.xlabel('Time [sec]') 
plt.show() 

33,4.9106E+13,-0.6946377,12.680544,0.50395286 
33,4.91061E+13,5.012288,11.264028,0.95342433 
33,4.91061E+13,4.903325,10.882658,-0.08172209 
33,4.91062E+13,-0.61291564,18.496431,3.0237172 
+0

무엇이 당신의 질문입니까? – Engineero

+0

python에서 3D 가속도계 파일의 스펙트로 그램을 얻는 방법은 무엇입니까? –

+0

내 코드가 작동하지 않습니다. –

답변

0

귀하의 게시 된 데이터는 헤더가없는 내 데이터 세트의 일부입니다, 그래서 당신의 마지막 3 열은 실제 가속이라고 추측하고있어, 첫 번째 열은 무이자입니다 두 번째 열은 시간을 상징합니다. 그러나 그것이 시간 신호라면 어떤 주파수로 샘플링합니까?

당신은 아직 당신이 예상하지 못한 것을 설명하지 못했지만, 여러 채널로 음모를 꾸미는 것처럼 보입니다. 내가 아는 한 하나의 신호에 대해서만 스펙트로 그램을 만듭니다.

다음은 비슷한 데이터를 처리하는 방법입니다. 그러나 모든 데이터를 가짜로 만들어야 의미있는 플롯이됩니다.

import numpy as np 
import matplotlib.pyplot as plt 

# faked data with noise & trends, with assumption of which column is what 
fake_size = int(1e4) 
time = np.arange(fake_size)/1000 # 1kHz 
# your dataset[:,1] ? 
base_freq = 2 * np.pi * 100 
x = np.sin(4*base_freq*time) + 0.2 * np.random.random(fake_size) 
# your dataset[:,2] ? 
y = np.sin(2*base_freq*time) + 0.1 * np.random.random(fake_size) - 0.05 + time 
# your dataset[:,3] ? 
z = np.sin(3*base_freq*time) + np.sin(1.5*base_freq*time)+ 0.1 * np.random.random(fake_size) - 0.05 
# your dataset[:,4] ? 

xyz_magnitude = x**2 + y**2 + z**2 

to_plot = [('x', x), ('y', y), ('z', z), ('xyz', xyz_magnitude)] 

for chl, data in to_plot: 
    plt.figure(); plt.title(chl) 
    plt.specgram(data, Fs=1000) 
    plt.xlabel('Time [s]'); plt.ylabel('Frequency [Hz]') 

이 빠르게 당신이 진정으로 상대 크기 및 또는 단계를 쫓는 그러나 경우, 주파수가이 spectras에 어떤 그림을 줄 것이다, 당신은 추가 수학뿐만 아니라 플롯을해야 할 것입니다. 주파수의 시각적 인상은 크기에 따라 다르므로, 예를 들어 xyz_magnitude에서 np.sqrt을 수행하면 플롯이 정확하게 동일하지 않게됩니다.

+0

thnx 그것은 나를 돕는다. 나는 질문을하고 싶다! ... x와 z는 코드에서 생성 된 신호인가? 그렇다면 각 축에 텍스트 파일 신호를 추가하는 방법은 무엇입니까? –

+0

이 생성됩니다 * signal? –

+0

comment # your data ... 데이터를 할당하는 추측으로 의도 된 것입니다. 즉,'x = dataset [:, 2]'등, 열에 헤더를 제공하지 않았기 때문에 짐작할 수 있습니다. 어떤 데이터가 어떤 열에 있는지, 내 가정은 실제 데이터 세트가 세 번째 열에'x'가 있다는 것입니다. 붙여 넣은 데이터는 초 단위로 채널을 보유하지 않는 것으로 보입니다.이 채널은'plt.specgram'으로 작동하지만, 실제 샘플링 빈도를 알아야 올바른 스케일링으로 끝날 수 있습니다 (x & 플롯에서 y 축. – ahed87

관련 문제