0

我想创建一个未定义值的矩阵 A 并让以下代码正常工作。

A = Matrix{Tuple{Float64, Array{Int64, 1}}}(undef, 100, 100)

稍后,我想检查一个特定的单元格是否未定义,如果是,则在计算后分配一个值。我试过isdefined(A, i, j)了,但是因为太多的论点而导致错误。#undef仅在未定义时如何检查和分配?

上的文档isdefined只为一维数组提供了一种方法,如何在矩阵上实现相同的方法?

4

2 回答 2

2

您可以使用该isassigned功能(isdefined顺便说一句,帮助字符串中提到了该功能)。就像isdefined它似乎只接受线性索引,但你可以从LinearIndices.

julia> A = Matrix{Tuple{Float64, Array{Int64, 1}}}(undef, 100, 100);

julia> A[5, 4] = (2.1, [5])
(2.1, [5])

julia> isassigned(A, LinearIndices(A)[1, 1])
false

julia> isassigned(A, LinearIndices(A)[5, 4])
true

编辑:正如@PrzemyslawSzufel 的回答所示,您不需要线性索引。但是,直到并包括 v1.5.1 似乎没有记录

于 2020-09-21T20:36:46.967 回答
2

使用isassigned

julia> A[2,3]=(3.0, [])
(3.0, Any[])

julia> isassigned(A,2,3)
true

julia> isassigned(A,3,3)
false
于 2020-09-21T20:39:53.910 回答