using matrix-based approach for both spreading and interpolation