Here, a, b, and n can have different values (the values depend on problems I want to solve).
You'll notice that the 1st way (naive MATLAB * operation) is much faster than for-loop after running this code. Therefore, I concluded that for-loop is not an answer for my question.
I want to find more efficient way than naive MATLAB * operation (I know MATLAB * operation is already quite optimized).
The reason why I think there may be more efficient way is that matrix "A_MAT" and "B_MAT" are not only quite sparse but also very regularly organized. (You can see how well they are organized by using "spy(A_MAT)" or "spy(B_MAT)" in MATLAB).
Therefore, I thought there might be a special algoritm suitable for doing this matrix multiplication.
Matlab calls optimized functions for sparse matrix multiplications already. Sometime we had an acceleration with hard-coded sparse matrix multiplications written in Fortran77, but I assume, that the time to implement this will exceed the time you win during running. Maybe you can call one of the established libraries through a Mex function, see Armadillo, Blaze, Boost.uBlas, CSparse, Eigen, SuiteSparse .
Even if the sparsity pattern looks obvious for the human eye, it is not trivial to implement the pattern in a hard coded algorithm. Therefore the general purpose codes in the sparse libs called by Matlab are efficient already and hard to bet.