Wenden Sie eine Funktion auf ein mehrdimensionales Array an: R vs MATLAB

8

Diese Frage kann im Zusammenhang mit dieser eine , der mir half, die R-Leistungen zu verbessern, indem ich den Mittelwert auf einer großen Reihe berechnete. Leider versuche ich in diesem Fall, etwas Komplexeres anzuwenden (wie eine Quantilsberechnung).

Ich habe ein 4-D-Array mit mehr als 40 Millionen Elementen und ich möchte das 66. Perzentil für eine bestimmte Dimension berechnen. Hier ist der MATLAB-Code:

%Vor%

Machen wir etwas Ähnliches in R.

%Vor%

Ich war mir der besseren Leistungen von MATLAB gegenüber R bewusst, aber in diesem Fall weiß ich nicht, was ich tun soll. Wahrscheinlich muss ich nur 2 Minuten statt 1 Sekunde warten ... Ich hoffe, jemand kann mir einen Weg vorschlagen, die Laufzeiten zu verbessern, Wie auch immer, danke im Voraus ...

UPDATE Ich habe einige der Vorschläge in die Kommentare übernommen und die Laufzeit verkürzt:

%Vor%

Wir sind immer noch weit von den MATLAB-Performances entfernt, aber zumindest habe ich etwas gelernt.

UPDATE Ich habe hier einige Fortschritte im Zusammenhang mit 'Quantil' Funktion diskutiert hier . Die Laufzeit des gleichen Codes, den ich oben gezeigt habe, ist von 33 auf 5 Sekunden gegangen ...

    
Matteo De Felice 02.04.2014, 07:01
quelle

1 Antwort

5

Die RcppOctave Paket ruft die   GNU Octave API-Funktionen; Wenn Sie GNU Octave noch nicht kennen, ist es sehr ähnlich wie Matlab und zielt auf vollständige Kompatibilität ab.

Das ist fast so schnell wie Matlab direkt ...

%Vor%

Eine ziemlich geradlinige Übersetzung von Octaves quantile.m zu R.

%Vor%     
Thell 08.05.2014 03:41
quelle

Tags und Links