在JULIA中,如何预分配具有n行的Measurements.jl向量



我想预先分配一个有n行的向量(例如下面的a(,准备用Measurements.jl变量(即a±b形式的变量(填充循环。例如:

using Measurements
A = zeros(5,1) # this doesn't work
for n = 1:5
local B = rand() ± rand()
local C = rand() ± rand()
global A[n,1] = sqrt.((B-C).^2)
end
println(A)

您可以制作一个Measurements数组。jlMeasurement有多种方法,包括

A = fill(0±0, size)

A = Array{Measurement}(undef, size)

例如

using Measurements
A = fill(0±0, 5, 1)
for n = 1:5
B = rand() ± rand()
C = rand() ± rand()
A[n,1] = sqrt.((B-C).^2)
end
julia> A
5×1 Matrix{Measurement{Float64}}:
0.28 ± 1.0
0.45 ± 0.87
0.67 ± 0.58
0.28 ± 0.62
0.3 ± 0.67

注意,这里通常不需要globallocal注释,除非您在脚本的全局范围内运行(而不是在REPL、函数、let块或其他任何地方(。

我们还可以为函数zeros提供一个类型。如果我们执行以下代码。

using Measurements
A = zeros(Measurement,5,1) # provide the type Measurement here
for n = 1:5
local B = rand() ± rand()
local C = rand() ± rand()
global A[n,1] = sqrt.((B-C).^2)
end

收益率

5×1 Matrix{Measurement}:
0.068 ± 1.1
0.63 ± 0.95
0.88 ± 0.43
0.73 ± 0.17
0.069 ± 0.95

如果我们通过使用产生5×1 Matrix{Measurement{Float64}}A = zeros(Measurement{Float64},5,1)来提供测量内部的类型,我们也可以更严格。

如果我们提供在Real类型的5x1 Matrix中产生的Real类型,它也起作用。

最新更新