gpt4 book ai didi

arrays - 调整矩阵大小

转载 作者:行者123 更新时间:2023-12-02 09:57:45 25 4
gpt4 key购买 nike

我正在尝试想出一种在 Julia 中调整矩阵大小的高效方法。该矩阵仅用作某些方法内部雅可比行列式的内部缓存,因此不需要以任何顺序保留其值(它们将立即被覆盖)。我正在考虑直接生成一个向量并使用该矩阵作为该向量的 reshape View 。然而,Julia 随后阻止我调整大小!调整向量:

Jvec = zeros(9)
J = reshape(Jvec,3,3))
resize!(Jvec,16)


cannot resize array with shared data
in resize!(::Array{Float64,1}, ::Int64) at ./array.jl:512
in include_string(::String, ::String) at ./loading.jl:441
in eval(::Module, ::Any) at ./boot.jl:234
in (::Atom.##67#70)() at /home/crackauc/.julia/v0.5/Atom/src/eval.jl:40
in withpath(::Atom.##67#70, ::Void) at /home/crackauc/.julia/v0.5/CodeTools/src/utils.jl:30
in withpath(::Function, ::Void) at /home/crackauc/.julia/v0.5/Atom/src/eval.jl:46
in macro expansion at /home/crackauc/.julia/v0.5/Atom/src/eval.jl:109 [inlined]
in (::Atom.##66#69)() at ./task.jl:60

并且也不会让我调整大小! View 消失的矢量(希望之后创建一个新 View ):

J = 0
resize!(Jvec,16)

cannot resize array with shared data
in resize!(::Array{Float64,1}, ::Int64) at ./array.jl:512
in include_string(::String, ::String) at ./loading.jl:441
in eval(::Module, ::Any) at ./boot.jl:234
in (::Atom.##67#70)() at /home/crackauc/.julia/v0.5/Atom/src/eval.jl:40
in withpath(::Atom.##67#70, ::Void) at /home/crackauc/.julia/v0.5/CodeTools/src/utils.jl:30
in withpath(::Function, ::Void) at /home/crackauc/.julia/v0.5/Atom/src/eval.jl:46
in macro expansion at /home/crackauc/.julia/v0.5/Atom/src/eval.jl:109 [inlined]
in (::Atom.##66#69)() at ./task.jl:60

任何关于如何在每次不完全重新分配矩阵的情况下完成此操作的见解都是有帮助的。提前致谢。

最佳答案

您正在踏入一些危险的领域(该警告的存在是有原因的),但是如果您不调用 reshape(Jvec, 3, 3) ,那么您就会这样做

J = Base.ReshapedArray(Jvec,(3,3), ())

然后它可能会如您所希望的那样工作。

关于arrays - 调整矩阵大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41781621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com