I wish to create an array whose length is 102 and having constant values everywhere without defining a for-loop
explicitly. Assuming such an array ArrayWithConst
, if I define it like ArrayWithConst[1:end]=5.0
, this generates an error. I wonder how to implement this. Thanks in advance for kind advices.
fill(5.0, 102)
Is this what you are looking for?
6 Likes
Also, your code is almost right. If you already have ArrayWithConst
, then setting all of its values to 5.0
can be done by ArrayWithConst[1:end] .= 5.0
(note the dot before the =
).
2 Likes
thanks!
thanks. this does not work for me (type mismatch error). I first defined xd=1.5:0.05:6.55
, then ArrayWithConstant=copy(xd)
for preparation.
You need a mutable copy, not a range (which is returned by copy
of a range). Try Vector(xd)
instead of copy(xd)
, for example (or Base.copymutable(xd)
).
(But better yet, just do fill(5.0, length(xd))
— it is pointless to make a copy just to overwrite it.)
2 Likes
Why not the basic: ArrayWithConst = zeros(102) .+ 5.0
?
That’s almost certainly 2x slower (with not much gain).
4 Likes