Assignment to sub-matrix?

Is there a high level function in Stan that will allow assignment to a sub-matrix, e.g., (pseudo-code)

Sig[a:b, c:d] = gp_matern32_cov(x1, x2 a, r); //?

Along this line, do the matrix block extraction functions have corresponding replacement functions?



The closest thing we have is the block function, but that will only let you assign/extract consecutive values

Great! Assignment is what I need. After reading (browsing) through the documentation, I was left with the impression that there was only a block extraction function, not assignment. I must have missed the block assignment function. Thank you.

Doesn’t your original code work? I do this kind of thing all over the place, but not with the gp function.

Even better! Again, I failed to see such replacement functionality in the documentation for matrices. I must overlooked this. I will try it.

Hi, @Jarrett_Barber! Long time no see. Your example should work as written if b - a = d - c and they are the same size as the resulting covariance matrix. For example, we can do this:

matrix[3, 3] x;
matrix[5, 5] y = ...;
y[1:3, 2:4] = x;

The general rule is that if you have multi-indexes A and B consisting of sequences of integers, then

y[A, B](m, n) =def= y[A[m], B[n]]

and expressions like y[A, B] can be used on the left.

Even better. Thanks, Bob. Sorry if I missed this in the documentation. Best, — Jay