"Wanderson " <firstname.lastname@example.org> wrote in message <email@example.com>... > dpb <firstname.lastname@example.org> wrote in message <email@example.com>... > > On 6/11/2013 6:49 PM, dpb wrote: > > > On 6/11/2013 6:00 PM, Wanderson wrote: > > >> dpb <firstname.lastname@example.org> wrote in message <email@example.com>... > > > ... > > > > > >>> If you need speed, the straight-ahead loop is probably as good as > > >>> you're going to do w/o a specialized mex function. (I believe there > > >>> may be some submissions on File Exchange that do, in fact, promise > > >>> better performance than bsxfun iirc) > > >>> > > >>> -- > > >> > > >> hehe, my problem is that I am doing a program that evaluates some double > > >> integrals, calculate FFT and whanever, but I have a NECESSARY big 'FOR > > >> LOOP' inside my program to store each value of these integrals in the > > >> right place. And I didn't want to use another loop inside my huge loop > > >> rsrsrs. > > > > > > For 3x3 you can always try the explicit repmat() route, too for > > > comparative timings... > > > > > > m.*repmat(v,size(m,1),1) > > > > > > And, of course, if you're lucky enough that the v is a constant you > > > could obviously save it since memory isn't going to be an issue. > > > > > > bsxfun() is essentially syntactic candy to save explicitly writing such > > > as the above but is basically all it is. Of course, it has the overhead > > > of processing inputs and all that. I've not tested but I'd suspect the > > > time differential would drop pretty quickly w/ size of the arrays as > > > compared to other implementation choices. > > > > > > > BTW... > > > > If the object is speed in an inner loop, then for the 3x3 case the > > original version of writing out the three explicit multiplies may well > > be the most efficacious route. For higher dimensions it gets klunky > > certainly but for as few as three it's not so bad. > > > > -- > > > Thanks again dpb, > In fact, my matrices dimensions vary inside my program rsrs. > I start with an 3x3 matrix and they will growing as (2k+1) x (2k+1) dimension. > I'll try the repmat idea, this function seems to be very usefull to many things, I should learn more about it.
I just implemented the repmat solution in my code, but it is slower than the bsxfun() option. I did the test using the same parameters inside my program and I found this: Using bsxfun() my program took 13 second to complete. Using repmat() my program took 20 second to complete.
It is a huge difference to me, because I need to run it several times, as I said before, and 7 second every time that I run the code, is a lot of thing.