arrays - 调整矩阵大小

标签 arrays memory-management julia

我正在尝试想出一种在 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/

相关文章:

julia - "Base"关键字在 Julia 中是什么意思?

function - 有效使用函数作为参数

javascript - 我可以创建一个 Array.isArray() 返回 true 的对象而不使用 Array 构造函数或数组文字吗?

c++ - c++ 在哪里存储固定大小数组的大小?

ios - 将 swift 数组解析为有效的 json

javascript - 转换字符串(url 样式)以在对象中导航

c - 除了页面级映射之外,文件的 mmap 可以通过任何其他方式完成吗?

c++ - 紧密物理和碰撞循环中的缓存友好内存访问

linux - CMA问题(设计错误)

arrays - Julia:将分类数组转换为数值数组的最佳方法是什么?