Ich verwende Physionet's data base für einige Aufgaben im Zusammenhang mit der EKG-Signalanalyse. Ich wollte .MAT-Dateien lesen, die MLII-Werte aus der Datei extrahieren (in Reihe 1), das Signal mit "Gain" und "Base" (im .INFO-Feld von Physionet) auf mV einstellen und schließlich drucken die Signalwerte und ihre Periode.Python 2.7: Variable "ist nicht definiert"
Ich wollte ein Skript schreiben, das alle diese Dinge für alle Dateien in einem Ordner tun könnte. Vorher habe ich eine geschrieben, in der ich alles, was oben erwähnt wurde, machen konnte und es hat gut funktioniert.
Aber das Skript, das alle .mat und .info-Dateien in meinem Ordner verwalten würde, gibt mir Probleme mit den Variablen. Ich habe versucht, den Befehl 'global' zu Beginn meiner Folge von IFs zu verwenden, aber es wurde eine ähnliche Fehlermeldung gesendet.
Dies ist der Code:
import os
import scipy.io as sio
import numpy as np
import re
import matplotlib.pyplot as plt
for file in os.listdir('C:blablablablabla\Multiple .mat files'):
if file.endswith(".mat"):
file_name=os.path.splitext(file)
ext_txt=".txt"
ext_info=".info"
if file.endswith(".info"):
f=open(file_name[0]+ext_info,'r')
k=f.read()
f.close()
j=re.findall('\d+', k)
Fs=j[9]
gain=j[13]
base=j[14]
RawData=sio.loadmat(file)
signalVectors=RawData['val']
[a,b]=signalVectors.shape
signalVectors_2=np.true_divide((signalVectors-gain),base)
ecgSignal=signalVectors_2[1,1:]
T=np.true_divide(np.linspace(1,b,num=b-1),Fs)
txt_data=np.array([ecgSignal, T])
txt_data=txt_data.T
f=open(file_name[0]+ext_name,'w')
np.savetxt(file_name[0]+ext_txt,txt_data,fmt=['%.8f','%.8f'])
f.close()
Die Fehlermeldung ich erhalte, ist:
> File "C:blablablablabla\Multiple .mat files\ecg_mat_multi.py", line 24, in <module>
signalVectors_2=np.true_divide((signalVectors-gain),base)
NameError: name 'gain' is not defined
Das Problem kommt mit den 'Gewinn' Variablen 'Basis' und 'Fs'. Ich habe versucht, sie als globale Variablen zu definieren, aber das machte keinen Unterschied. Können Sie mir bitte helfen, diesen Fehler zu beheben?
Vielen Dank für Ihre Zeit und Hilfe.
EDIT 1: kopiert die Fehlermeldung unter dem Skript. EDIT 2: Änderte den Beitragstitel und löschte zusätzliche Fragen.
Sie haben uns nicht gesagt, was der Fehler ist. Welche Variable ist nicht definiert? –
Sie können die Frequenz suchen, indem Sie nach dem Stringindex der Wörter 'Sampling frequency' suchen und dann die entsprechenden Zeichen nach ie suchen: 'index = your_string.index ('Abtastfrequenz:')' 'frequency = your_string [(index +20): (index + 23)] ' – Jalo
@DanielRoseman tut mir leid, Daniel. Ich habe die Frage mit der Fehlermeldung, die ich bekomme, aktualisiert. –