From owner-help-octave at bevo dot che dot wisc dot edu Tue Nov 12 16:35:57 1996 Subject: Re: Efficient multiplication by a diagonal matrix From: Heber Farnsworth To: Mario Storti Cc: help-octave at bevo dot che dot wisc dot edu Date: Tue, 12 Nov 1996 14:34:22 -0800 (PST) There is a function called dmult written by KH which is available at ftp://ftp.tsc.uvigo.es//pub/octave/contrib/m-files/lalgebra/dmult.m I use it all the time. In my work I often have the need to do something which is little more complicated but related. That is a row-wise kronecker product of two matrices. If you need to do this let me know and I'll send you an m-file I wrote which does it pretty fast. Heber Farnsworth | Department of Finance Univerity of Washington | Box 353200 tele: (206) 528-0793 home | Seattle, WA 98195-3200 tele: (206) 543-4773 finance web: http://weber.u.washington.edu/~heberf fax: (206) 685-9392 email: heberf at u dot washington dot edu On Tue, 12 Nov 1996, Mario Storti wrote: > > I found myself repeatedly with the following problem. Given a matrix > A(n,m) and a vector v(n), I have to multiply each row A(j,:) by > v(j). This is equivalent to compute: > > B = diag(v) * A (1) > > Now, for large n, (1) is very inefficient, because it requires > constructing the square matrix diag(v) which requires storage and many > redundant operations since most elements of diag(v) are null. If n>>m > then: > > B= kron(v,ones(1,m)).*A (2) > > does the job and is better. But the more efficient way is computing > row by row if m>>n and column by column if n>>m. However, I repeat, I > find this problem so many times and in so many areas that it seems to > me that some system call should do it. > > I wrote some code of my own to do this task, but I wonder if I'm > redeveloping the wheel. Does anyone have a betetr solution? > > Mario > > %%%%%%<>%%%%%%<>%%%%%%<>%%%%%%<>%%%%%%<>%%%%%%<>%%%%%%<>%%%%%%<>%%%%%%<>%%% > Mario Alberto Storti | Fax: (54)(42) 55.09.44 | > Grupo de Tecnologia Mecanica | Tel: (54)(42) 55.91.75 | > INTEC, Guemes 3450 - 3000 Santa Fe | http://venus.unl.edu.ar/gtm-eng.html | > Argentina | Home: Gob. Vera 3161 | > Reply: mstorti at galileo dot unl dot edu dot ar| | (54)(42) 55 dot 00 dot 23 | (54)(42) 55.00.23 | >