Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Julia 1.0中特征值/特征向量的排序_Arrays_Sorting_Julia - Fatal编程技术网

Arrays Julia 1.0中特征值/特征向量的排序

Arrays Julia 1.0中特征值/特征向量的排序,arrays,sorting,julia,Arrays,Sorting,Julia,这个问题与其说是需要一个解决方案,不如说是问我的方法对Julia语言(Julianic?)来说是否自然,如果不是的话,什么是更自然的实现: @doc """ function sorteigen!(evals::Array{Number,1},evecs::Array{Number,2}) Sort the eigenvalues and vectors. """ function sorteigen!(evals::Array{Number,1},evecs::Array{Number,2}

这个问题与其说是需要一个解决方案,不如说是问我的方法对Julia语言(Julianic?)来说是否自然,如果不是的话,什么是更自然的实现:

@doc """
function sorteigen!(evals::Array{Number,1},evecs::Array{Number,2})

Sort the eigenvalues and vectors.
"""
function sorteigen!(evals::Array{Number,1},evecs::Array{Number,2})
n=size(evecs)[1];

#Shallow copy and force local scope
local sortedevals = copy(evals);
local sortedevecs = copy(evecs);

#Sort eigenvalue Array{Number,1}
sortedindex = sortperm(evals);
evals[:] = sortedevals[sortedindex];

#Sort eigenvectors
for i=1:n
    sortedevecs[:,i] = evecs[:,sortedindex[i]];
end

evecs[:,:] = sortedevecs[:,:]

end

在这种情况下,我将创建一个非变异函数:

function sorteigen(evals::Vector{T},evecs::Matrix{T}) where {T<:Real}
    p = sortperm(evals)
    evals[p], evecs[:, p]
end
函数sorteigen(evals::Vector{T},evecs::Matrix{T}),其中{T}
function sorteigen!(evals::Vector{T},evecs::Matrix{T}) where {T<:Real}
    p = sortperm(evals)
    s = similar(evals)
    for i in axes(evecs, 1)
        for (j, pv) in enumerate(p)
            @inbounds s[pv] = evecs[i, j]
        end
        for j in eachindex(s)
            @inbounds evecs[i, j] = s[j]
        end
    end
    sort!(evals), evecs
end