Ich habe die Data.Yarr Array-Bibliothek als möglicher Ersatz für einen Code, den ich in Repa habe, untersucht. Es scheint voll ausgestattet zu sein, und die Benchmarks - wenn sie richtig sind, deuten darauf hin, dass eine Leistungsverbesserung erreicht werden kann.Yarr Slice Verwendung
Ich interessiere mich für die korrekte Verwendung der Slices-Funktion.
sagen, dass ich eine 2D-ForeignPtr backed Matrix komplexen Floats hatte, in Reihenhaupt Format
matrix2D :: UArray F L DIM2 (Complex Float)
Wie würde ich einen Vektor von Scheiben Spalten Extrahieren gehe über und/oder Zeilen?
Ein motivierendes Beispiel? Nehmen wir an, ich möchte die Spalten permutieren, jedes Element mit einem anderen Satz von Slices multiplizieren und dann eine 1D FFT für jedes Slice durchführen.
Dies scheint eine sehr häufige Sache zu sein (in meiner Welt der Signalverarbeitung). Was ist der idiomatische Weg, dies zu tun?
Bearbeitet: um den Umfang der Frage zu reduzieren.
Ich habe noch nie Yarr verwendet, aber auf einen Blick scheint die Schnittstelle sehr ähnlich zu sein. Soweit Repa geht, hat es einen sehr allgemeinen Mechanismus für die Aufnahme von Arrays. "Ich habe auch nie eine gute Methode gefunden, dies in Repa zu machen." - dann sollten Sie Ihren "nicht netten" Code zeigen und angeben, warum Sie glauben, dass es nicht nett ist, oder zumindest, warum die "Slice" -Funktionalität, die in einer dieser beiden Bibliotheken existiert, nicht zufriedenstellend ist. So wie es aussieht, ist das viel zu weit gefasst. – user2407038
Die Slice-Funktionalität in diesen Bibliotheken kann zufriedenstellend sein. So wie es aussieht, fehlt es mir an meinem Verständnis ihrer Fähigkeiten - ich glaube, ich habe das gesagt, aber ich werde meine Frage überprüfen und versuchen, ihre Reichweite einzuschränken. – OllieB