Hi, wondering if there is an equivalent to the MATLAB method `spdiags(Bin, d, A)`

, where the diagonals in `A`

are replaced by those in `d`

with the columns of `Bin`

.

As far as I can tell, `spdiagsm`

does not support a method that allows as input an array `A`

to modify.

The context is finite-difference derivative matrices: one can initialize these to satisfy Dirichlet boundary conditions; implementing Periodic boundary conditions then requires only modifying one diagonal of this array.

Appreciate the support!

This won’t be the most efficient, but perhaps you may do something like

```
julia> S = spdiagm(-1 => [1,2,3,4], 1 => [4,3,2,1], 0=>1:5)
5×5 SparseMatrixCSC{Int64, Int64} with 13 stored entries:
1 4 ⋅ ⋅ ⋅
1 2 3 ⋅ ⋅
⋅ 2 3 2 ⋅
⋅ ⋅ 3 4 1
⋅ ⋅ ⋅ 4 5
julia> S[diagind(S)] .= reverse(1:5)
5-element view(reshape(::SparseMatrixCSC{Int64, Int64}, 25), 1:6:25) with eltype Int64:
5
4
3
2
1
julia> S
5×5 SparseMatrixCSC{Int64, Int64} with 13 stored entries:
5 4 ⋅ ⋅ ⋅
1 4 3 ⋅ ⋅
⋅ 2 3 2 ⋅
⋅ ⋅ 3 2 1
⋅ ⋅ ⋅ 4 1
```

If you use `BandedMatrices`

, you may use a `Band`

for the indexing.

```
julia> S = spdiagm(-1 => [1,2,3,4], 1 => [4,3,2,1], 0=>1:5);
julia> S[Band(1)] = fill(2,4);
julia> S
5×5 SparseMatrixCSC{Int64, Int64} with 13 stored entries:
1 2 ⋅ ⋅ ⋅
1 2 2 ⋅ ⋅
⋅ 2 3 2 ⋅
⋅ ⋅ 3 4 2
⋅ ⋅ ⋅ 4 5
```

Then again, perhaps you may want to work with a `BandedMatrix`

directly. You may convert this to a sparse matrix when necessary.

Thanks for the reply, @jishnub. In my case, I need to add content to a new diagonal, so perhaps the best method right now is to simply redefine the sparse array in full.