können Sie verschiedene Teile einer Liste zugreifen Part
mit oder (je nachdem, was Teile, die Sie benötigen) einige der spezielleren Befehle wie First
, Rest
, Most
und (die Sie benötigen) Last
. Wie in den Kommentaren erwähnt, Histogram[Last/@F]
oder Histogram[F[[All,-1]]]
wird gut funktionieren.
Obwohl es nicht Teil Ihrer Frage war, möchte ich einige Dinge notieren, die Sie für Ihr spezifisches Problem tun könnten, die es enorm beschleunigen werden. Sie definieren Mu
, Sigma
usw. 10.000 Mal, weil sie sich innerhalb des Befehls Table
befinden. Sie berechnen auch Mu - Sigma^2/2)*t + Sigma*Sqrt[t]
120.000 mal neu, obwohl es eine Konstante ist, weil Sie es innerhalb der FoldList
innerhalb der Table
haben.
Auf meinem Rechner:
F = Table[(Xi = RandomVariate[NormalDistribution[], 12];
Mu = -0.00644131;
Sigma = 0.0562005;
t = 1/12; s = 0.6416;
FoldList[(#1*Exp[(Mu - Sigma^2/2)*t + Sigma*Sqrt[t]*#2]) &, s,
Xi]), {SeedRandom[2]; 10000}]; // Timing
{4.19049, Null}
Diese Alternative ist zehnmal schneller:
F = Module[{Xi, beta}, With[{Mu = -0.00644131, Sigma = 0.0562005,
t = 1/12, s = 0.6416},
beta = (Mu - Sigma^2/2)*t + Sigma*Sqrt[t];
Table[(Xi = RandomVariate[NormalDistribution[], 12];
FoldList[(#1*Exp[beta*#2]) &, s, Xi]), {SeedRandom[2];
10000}] ]]; // Timing
{0.403365, Null}
I With
für die lokalen Konstanten und Module
für die Dinge, die innerhalb der Table
umdefiniert andere sind (Xi
) oder basieren Berechnungen auf den lokalen Konstanten (beta
). This question on the Mathematica StackExchange wird helfen zu erklären, wann Module
gegenüber Block
gegenüber With
zu verwenden ist. (Ich ermutige Sie, den Mathematica StackExchange weiter zu erforschen, da die meisten Mathematica-Experten gerade hier herumhängen.)
Für Ihren spezifischen Code ist die Verwendung von Part
nicht wirklich erforderlich. Verwenden Sie statt FoldList
einfach Fold
. Es behält nur die letzte Zahl in der Faltung bei, die mit der letzten Zahl in der Ausgabe von FoldList
identisch ist. So könnten Sie versuchen:
FF = Module[{Xi, beta}, With[{Mu = -0.00644131, Sigma = 0.0562005,
t = 1/12, s = 0.6416},
beta = (Mu - Sigma^2/2)*t + Sigma*Sqrt[t];
Table[(Xi = RandomVariate[NormalDistribution[], 12];
Fold[(#1*Exp[beta*#2]) &, s, Xi]), {SeedRandom[2];
10000}] ]];
Histogram[FF]
Berechnung FF
auf diese Weise sogar ein wenig schneller als die Vorgängerversion. Auf meinem System Timing
berichtet 0,377 Sekunden - aber eine solche Differenz von 0,4 Sekunden ist kaum erwähnenswert.
Da Sie die Samen mit SeedRandom
setzen, ist es einfach, dass alle genau die gleichen Ergebnisse liefern drei Codebeispiele zu überprüfen.
Ist das, was Sie wollen: 'Histogramm [Letzter/@ F]'? – mohit6up
Vielen Dank - ich habe K = F [[All, 13]] gefunden, aber das ist viel besser, thx! – seniorita
'F [[All, -1]]' würde auch funktionieren. – Heike