ich habe folgendes Problem: Ich habe eine Reihe an matlab-Dateien, in denen mehrere Messkanäle sind (Data_x_Channel). Zu jedem Data-Channel gehört ein Header-Channel (Data_x_Header). Ich brauche aus jeder matlab-Datei einen bestimmten Kanal. Theoretisch könnte man ihn immer gleich zuweisen, sodass es z.B. immer Channel_5_Data ist. Über die gesamte Messreihe hat sich aber etwas an der Messkonfiguration geändert, sodass dieser Sensor nicht über die gesamte Messreihe den gleichen Kanal hat. Ich kann inzwischen die header und deren content in einer txt-datei für jede der matlab-dateien abspeichern, um manuell nachzuschauen, welche nummer ich jetzt für meinen gesuchten Kanal nutzen muss. Es ergibt sich also in der txt-Datei folgendes Muster:
Code: Alles auswählen
### Fahrtx ###
Channel_1_Data: [[0.000][1.000][2.000]]
Channel_1_Header: [[(array(['204,08973'], dtype='<U9'), array (['s'], dtype='<U1'), usw.
Channel_2_Data: [...]
Channel_2_Header: [...] usw.
Mein Ansatz war folgender:
Code: Alles auswählen
def find_channel_with_pattern(mat_data, pattern):
for key in mat_data.keys():
if key.endswith("_Header"):
header = mat_data[key]
if hasattr(header, "dtype") and "SignalName" in header.dtype.names:
signal_name = header["SignalName"][0][0]
if isinstance(signal_name, str) and pattern in signal_name:
return key.replace("_Header", "_Data")
return None
Code: Alles auswählen
speed_channel = find_channel_with_pattern(mat, "GNSS_Speed")
if speed_channel is None:
print(f"Kein Kanal mit GNSS_Speed im Header in {mat_file_path} gefunden")
return
Wie lässt sich das Problem lösen? Gibt es eine elegantere Methode, die ich übersehen habe?
