Skip to content

Commit 1145dd9

Browse files
committed
General update
- Generation of matrix variates now follows Distributions.jl's abstract style - Matrix distributions are declared as abstract types - rand() generates dense matrix variates - bidrand(), tridrand(), sprand() generate bidiagonal, tridiagonal and general sparse variates - eigvalrand(), eigvaljpdf() generate random eigenvalue sets and calculate their joint pdf - Remove old fudges to generate full matrices to work around lack of bidiagonal support in pre-0.2 Julia - Remove obsolete custom extensions to Distributions.jl - Retab to 2 space indent - Make GSL dependency optional
2 parents ea750f9 + 929cab8 commit 1145dd9

11 files changed

+548
-761
lines changed

src/FastHistogram.jl

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,22 @@ export hist_eig
1111
#
1212
#For general matrices, this is slower than hist(eigvals(M), bins) and is NOT recommended
1313
function hist_eig{GridPoint <: Number}(M::AbstractMatrix, bins::Vector{GridPoint})
14-
n = size(M)[1]
15-
NumBins = length(bins)
16-
histogram = zeros(NumBins)
17-
SturmSequence = zeros(n)
18-
for BinId=1:NumBins
19-
K = M - bins[BinId]*eye(n)
20-
#Progression of determinants of lower-right submatrices
21-
#SturmSequence = [det(K[end-j+1:end,end-j+1:end]) for j=1:n]
22-
#SturmRatioSequence = [SturmSequence[j+1]/SturmSequence[j] for j=1:n]
14+
n = size(M)[1]
15+
NumBins = length(bins)
16+
histogram = zeros(NumBins)
17+
SturmSequence = zeros(n)
18+
for BinId=1:NumBins
19+
K = M - bins[BinId]*eye(n)
20+
#Progression of determinants of lower-right submatrices
21+
#SturmSequence = [det(K[end-j+1:end,end-j+1:end]) for j=1:n]
22+
#SturmRatioSequence = [SturmSequence[j+1]/SturmSequence[j] for j=1:n]
2323

24-
SturmSequenceSigns = [int(sign(det(K[end-j+1:end,end-j+1:end]))) for j=1:n]
25-
SturmSequenceSigns = [1; SturmSequenceSigns]
26-
SturmRatioSequence = [SturmSequenceSigns[j+1]/SturmSequenceSigns[j] for j=1:n]
27-
histogram[BinId] = sum([r < 0 for r in SturmRatioSequence])
28-
end
29-
histogram = int(diff([histogram; n]))
24+
SturmSequenceSigns = [int(sign(det(K[end-j+1:end,end-j+1:end]))) for j=1:n]
25+
SturmSequenceSigns = [1; SturmSequenceSigns]
26+
SturmRatioSequence = [SturmSequenceSigns[j+1]/SturmSequenceSigns[j] for j=1:n]
27+
histogram[BinId] = sum([r < 0 for r in SturmRatioSequence])
28+
end
29+
histogram = int(diff([histogram; n]))
3030
end
3131

3232

@@ -39,19 +39,19 @@ end
3939
# the Beta-Hermite Random Matrix Ensemble", M.Sc. thesis (MIT), 2007
4040
#
4141
function hist_eig{GridPoint <: Number}(M::SymTridiagonal, bins::Vector{GridPoint})
42-
n = size(M)[1]
43-
NumBins = length(bins)
44-
histogram = zeros(NumBins)
45-
r = zeros(n)
46-
for BinId=1:NumBins
47-
a, b = M.dv - bins[BinId], M.ev
48-
#Formula (2.3)
49-
r[1] = a[1]
50-
for i=2:n
51-
r[i] = a[i] - b[i-1]^2/r[i-1]
52-
end
53-
histogram[BinId] = sum([SturmRatio < 0 for SturmRatio in r])
42+
n = size(M)[1]
43+
NumBins = length(bins)
44+
histogram = zeros(NumBins)
45+
r = zeros(n)
46+
for BinId=1:NumBins
47+
a, b = M.dv - bins[BinId], M.ev
48+
#Formula (2.3)
49+
r[1] = a[1]
50+
for i=2:n
51+
r[i] = a[i] - b[i-1]^2/r[i-1]
5452
end
55-
histogram = int(diff([histogram; n]))
53+
histogram[BinId] = sum([SturmRatio < 0 for SturmRatio in r])
54+
end
55+
histogram = int(diff([histogram; n]))
5656
end
5757

0 commit comments

Comments
 (0)