2017-02-13 4 views
1

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.

+0

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

+0

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

Antwort

1

Ich behalte Yarr aber leider habe ich nur zeitweise Zugriff auf das Internet für die nächsten Wochen. Ich habe diesen Vergleich von Yarr und Repa vor einiger Zeit geschrieben: https://idontgetoutmuch.wordpress.com/2013/08/06/planetary-simulation-with-excursions-in-symplectic-manifolds-6/. Ich bin überrascht, dass Sie keine Schnitte mit Yarr machen können, ohne Zwang. Ich werde versuchen, in den nächsten Tagen einen Blick darauf zu werfen.

+0

Ich wäre sehr daran interessiert, ein Beispiel zu sehen, wie Sie einen spaltenweisen Operator auf ein 2D-Array anwenden (oder allgemeiner einen nD-Operator auf einem mD-Array, wobei n OllieB