@@ -672,16 +672,25 @@ a rounding procedure will be applied with mode `r`.
672
672
# Examples
673
673
674
674
```jldoctest; setup=:(using OffsetArrays)
675
- A = reshape(collect(1:9), 3, 3)
676
- c = OffsetArrays.center(A) # (2, 2)
677
- A[c...] == 5 # true
675
+ julia> A = reshape(collect(1:9), 3, 3)
676
+ 3×3 $(Matrix{Int}) :
677
+ 1 4 7
678
+ 2 5 8
679
+ 3 6 9
678
680
679
- Ao = OffsetArray(A, -2, -2)
680
- c = OffsetArrays.center(Ao) # (0, 0)
681
- Ao[c...] == 5 # true
681
+ julia> c = OffsetArrays.center(A)
682
+ (2, 2)
682
683
683
- # output
684
- true
684
+ julia> A[c...]
685
+ 5
686
+
687
+ julia> Ao = OffsetArray(A, -2, -2); # axes (-1:1, -1:1)
688
+
689
+ julia> c = OffsetArrays.center(Ao)
690
+ (0, 0)
691
+
692
+ julia> Ao[c...]
693
+ 5
685
694
```
686
695
687
696
To shift the center coordinate of the given array to `(0, 0, ...)`, you
@@ -696,26 +705,55 @@ end
696
705
"""
697
706
centered(A, cp=center(A)) -> Ao
698
707
699
- Shift the center coordinate of array `A` to `(0, 0, ...)`. If `size(A, k)`
700
- is even, a rounding procedure will be applied with mode `r `.
708
+ Shift the center coordinate/point `cp` of array `A` to `(0, 0, ..., 0 )`. Internally, this is
709
+ equivalent to `OffsetArray(A, .-cp) `.
701
710
702
711
!!! compat "OffsetArrays 1.9"
703
712
This method requires at least OffsetArrays 1.9.
704
713
705
714
# Examples
706
715
707
716
```jldoctest; setup=:(using OffsetArrays)
708
- A = reshape(collect(1:9), 3, 3)
709
- Ao = OffsetArrays.centered(A)
710
- Ao[0, 0] == 5 # true
717
+ julia> A = reshape(collect(1:9), 3, 3)
718
+ 3×3 $(Matrix{Int}) :
719
+ 1 4 7
720
+ 2 5 8
721
+ 3 6 9
722
+
723
+ julia> Ao = OffsetArrays.centered(A); # axes (-1:1, -1:1)
724
+
725
+ julia> Ao[0, 0]
726
+ 5
727
+
728
+ julia> Ao = OffsetArray(A, OffsetArrays.Origin(0)); # axes (0:2, 0:2)
711
729
712
- A = reshape(collect(1:9), 3, 3)
713
- Ao = OffsetArray(A, OffsetArrays.Origin(0))
714
- Aoo = OffsetArrays.centered(Ao)
715
- Aoo[0, 0] == 5 # true
730
+ julia> Aoo = OffsetArrays.centered(Ao); # axes (-1:1, -1:1)
716
731
717
- # output
718
- true
732
+ julia> Aoo[0, 0]
733
+ 5
734
+ ```
735
+
736
+ Users are allowed to pass `cp` to change how "center point" is interpreted, but the meaning of the
737
+ output array should be reinterpreted as well. For instance, if `cp = map(last, axes(A))` then this
738
+ function no longer shifts the center point but instead the bottom-right point to `(0, 0, ..., 0)`.
739
+ A commonly usage of `cp` is to change the rounding behavior when the array is of even size at some
740
+ dimension:
741
+
742
+ ```jldoctest; setup=:(using OffsetArrays)
743
+ julia> A = reshape(collect(1:4), 2, 2) # Ideally the center should be (1.5, 1.5) but OffsetArrays only support integer offsets
744
+ 2×2 $(Matrix{Int}) :
745
+ 1 3
746
+ 2 4
747
+
748
+ julia> OffsetArrays.centered(A, OffsetArrays.center(A, RoundUp)) # set (2, 2) as the center point
749
+ 2×2 OffsetArray(::$(Matrix{Int}) , -1:0, -1:0) with eltype $(Int) with indices -1:0×-1:0:
750
+ 1 3
751
+ 2 4
752
+
753
+ julia> OffsetArrays.centered(A, OffsetArrays.center(A, RoundDown)) # set (1, 1) as the center point
754
+ 2×2 OffsetArray(::$(Matrix{Int}) , 0:1, 0:1) with eltype $(Int) with indices 0:1×0:1:
755
+ 1 3
756
+ 2 4
719
757
```
720
758
721
759
See also [`center`](@ref OffsetArrays.center).
0 commit comments