Hallo Zusammen,
Ich beschäftige mich mit der Übersetzung eines MAtlabcodes auf Python.
Mit Python habe ich gar keine Erfahrung, aber die Grammatik kann man schon nachvollziehen. Das Einzige bei der Übersetzen, was mir unklar ist, sind die ersten 2 Zeilen.
Im TestSignal habe ich ungf. 15 Mio. Abtastwerte, die ich dann in signal packe. Dannach muss ich auf die einzelne Elemente des signals zugeifen.
Ich wäre sehr dankbar, wenn mir jedaman Tipps gibt, wie ich fopen und fread in Pathon benutzen kann und wie sieht überhapt mit dem Dateflow aus;
diese 15 Mio. Abtastwerte müssen doch irgendwo zwischengespeichert werden.
1: rx = fopen('TestSignal','r');
2: rx = fread(rx,'float=>double');
3: signal = sqrt(rx(1001:2:end).^2 + rx(1002:2:end).^2);
MFG.
Matlabs fread fopen in Python
@liverpool: Du müsstest Dich neben den Python-Grundlagen mit dem `numpy`-Paket auseinander setzen. Das hat auch ein Tutorial bei der Dokumentation.
Bei `numpy` suchst Du wahrscheinlich die `fromfile()`-Funktion und die `astype()`-Methode auf `numpy`-Arrays, wenn ich die Matlab-Dokumentation von `fread()` richtig verstanden haben. Also etwas in der Art (ungetestet):
Bei der `signal`-Zeile habe ich jetzt geraten was der Matlab-Ausdruck vielleicht bedeuten kann/soll. Da fehlt mir das Matlab-Wissen.
Bei `numpy` suchst Du wahrscheinlich die `fromfile()`-Funktion und die `astype()`-Methode auf `numpy`-Arrays, wenn ich die Matlab-Dokumentation von `fread()` richtig verstanden haben. Also etwas in der Art (ungetestet):
Code: Alles auswählen
import numpy as np
def main():
rx = np.fromfile('TestSignal', np.float32).astype(np.float64)
signal = np.sqrt(rx[1001::2]**2 + rx[1002::2]**2)
if __name__ == '__main__':
main()
Weil Matlab ab 1 indiziert, numpy aber ab 0, müssen die Indizes um eins verschoben werden.
Code: Alles auswählen
import numpy as np
def main():
rx = np.fromfile('TestSignal', np.float32).astype(np.float64)
signal = np.sqrt((rx.reshape(-1,2)[500:]**2).sum(1))
if __name__ == '__main__':
main()