Fetch dgbmv.f from Netlib/BLAS (or use Goto-Blas).
Write a MEX-file in C (you may use a wrapper
m-file as
well, if you like). You do not have to
implement all the capabilities of dgbmv.f,
it is sufficient that the MEX-file can handle y = B * x, where x and y
are vectors and B is a square band matrix. It should be possible for
the upper
and lower bandwidths to be different. Call your routine from Matlab and test it on some simple examples so you can see that everything works correctly. Run your routine from Matlab and check the speedup compared to the sparse version. You must probably use GotoBLAS to get any speedup (in that case you need to use long integers (and not int) in your mex-file). |