# How to get a matrix anti-diagonal?

**URL:** <https://discourse.julialang.org/t/how-to-get-a-matrix-anti-diagonal/103202>\
**Category:** New to Julia\
**Tags:** question, linearalgebra\
**Created:** [August 25, 2023, 7:33pm UTC](https://discourse.julialang.org/t/how-to-get-a-matrix-anti-diagonal/103202 "2023-08-25T19:33:15Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![jcbritobr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jcbritobr/32/219275_2.png) [@jcbritobr](https://discourse.julialang.org/u/jcbritobr)\
**Post date:** [August 25, 2023, 7:33pm UTC](https://discourse.julialang.org/t/how-to-get-a-matrix-anti-diagonal/103202/1 "2023-08-25T19:33:15Z")

</div>

Hello, good afternoon.

How to get an offdiagonal from a square matrix? I have diag function for the diagonal but how to acquire the below?

```julia
A = [1 2; 3 4]
offd(A)
result -> [2, 3]

```

---

<div class="post-metadata">

**Author:** ![barucden](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/barucden/32/26154_2.png) [@barucden](https://discourse.julialang.org/u/barucden)\
**Post date:** [August 25, 2023, 7:36pm UTC](https://discourse.julialang.org/t/how-to-get-a-matrix-anti-diagonal/103202/2 "2023-08-25T19:36:09Z")

</div>

Does `diag(A, 1)` work?

---

<div class="post-metadata">

**Author:** ![jcbritobr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jcbritobr/32/219275_2.png) [@jcbritobr](https://discourse.julialang.org/u/jcbritobr)\
**Post date:** [August 25, 2023, 7:38pm UTC](https://discourse.julialang.org/t/how-to-get-a-matrix-anti-diagonal/103202/3 "2023-08-25T19:38:42Z")

</div>

not worked  
 ![image](https://global.discourse-cdn.com/julialang/original/3X/5/7/57f1a249d3f0be9f422f02fb3709dbb249cd5f0d.png)

---

<div class="post-metadata">

**Author:** ![mbauman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbauman/32/31082_2.png) [@mbauman](https://discourse.julialang.org/u/mbauman)\
**Post date:** [August 25, 2023, 7:41pm UTC](https://discourse.julialang.org/t/how-to-get-a-matrix-anti-diagonal/103202/4 "2023-08-25T19:41:09Z")

</div>

I think you’re after what I’d call the antidiagonal.

You could do something like this:

```julia
function antidiag(A::AbstractMatrix)
    allequal(size(A)) || throw(ArgumentError("antidiag requires a square matrix"))
    return A[[CartesianIndex(i,j) for (i,j) in zip(axes(A, 1), reverse(axes(A, 2)))]]
end

```

---

<div class="post-metadata">

**Author:** ![jcbritobr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jcbritobr/32/219275_2.png) [@jcbritobr](https://discourse.julialang.org/u/jcbritobr)\
**Post date:** [August 25, 2023, 7:44pm UTC](https://discourse.julialang.org/t/how-to-get-a-matrix-anti-diagonal/103202/5 "2023-08-25T19:44:32Z")

</div>

Yep, I think julia doesnt have a similar function

---

<div class="post-metadata">

**Author:** ![jishnub](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jishnub/32/33620_2.png) [@jishnub](https://discourse.julialang.org/u/jishnub)\
**Post date:** [August 25, 2023, 7:47pm UTC](https://discourse.julialang.org/t/how-to-get-a-matrix-anti-diagonal/103202/6 "2023-08-25T19:47:51Z")

</div>

If you don’t care about allocations, a simple solution might be

```julia
julia> a = [1 2; 3 4]
2×2 Matrix{Int64}:
 1 2
 3 4

julia> diag(rotl90(a))
2-element Vector{Int64}:
 2
 3

```

---

<div class="post-metadata">

**Author:** ![jcbritobr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jcbritobr/32/219275_2.png) [@jcbritobr](https://discourse.julialang.org/u/jcbritobr)\
**Post date:** [August 25, 2023, 7:49pm UTC](https://discourse.julialang.org/t/how-to-get-a-matrix-anti-diagonal/103202/7 "2023-08-25T19:49:01Z")

</div>

thats a nice solution
