From octave-sources-request at bevo dot che dot wisc dot edu Fri Oct 15 07:44:27 1999 Subject: modified kron.m From: etienne grossmann To: octave-sources at bevo dot che dot wisc dot edu CC: etienne at isr dot ist dot utl dot pt Date: Fri, 15 Oct 1999 13:44:10 +0100 (WEST) --Multipart_Fri_Oct_15_13:44:09_1999-1 Content-Type: text/plain; charset=US-ASCII Hello, I have implemented the kronecker product in slightly faster way than in kron.m : the code is (in fact, there is also an argument check): function c = mykron(a,b) [ra,ca]=size(a); [rb,cb]=size(b); c = a((ones(rb,1)*[1:ra])(:),(ones(cb,1)*[1:ca])(:)).*... b(([1:rb]'*ones(1,ra))(:),([1:cb]'*ones(1,ca))(:)); I a little test seems to show that this is about twice as fast as the original kron. I attach the files mykron.m, which defines the function, and test_mykron.m, that checks that the result of kron and mykron are equal, and times the cpu time. Cheers, Etienne --Multipart_Fri_Oct_15_13:44:09_1999-1 Content-Type: application/octet-stream Content-Disposition: attachment; filename="mykron.m" Content-Transfer-Encoding: base64 IyMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3IEpvaG4gVy4gRWF0b24KIyMKIyMgVGhpcyBm aWxlIGlzIHBhcnQgb2YgT2N0YXZlLgojIwojIyBPY3RhdmUgaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAojIyB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQojIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBv ciAoYXQgeW91ciBvcHRpb24pCiMjIGFueSBsYXRlciB2ZXJzaW9uLgojIwojIyBPY3RhdmUg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0 CiMjIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKIyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKIyMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgojIwojIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIyBhbG9uZyB3aXRoIE9jdGF2ZTsg c2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCiMjIFNv ZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9u LCBNQQojIyAwMjExMS0xMzA3LCBVU0EuCgojIyBVc2FnZTogeCA9IGtyb24gKGEsIGIpCiMj CiMjIEZvcm0gdGhlIEtyb25lY2tlciBwcm9kdWN0IG9mIHR3byBtYXRyaWNlcywgZGVmaW5l ZCBibG9jayBieSBibG9jawojIyBhcwojIwojIyAgIHggPSBbYShpLGopIGJdCgojIyBBdXRo b3I6IEV0aWVubmUgR3Jvc3NtYW5uIDxldGllbm5lQGlzci5pc3QudXRsLnB0PgojIyBDcmVh dGVkOiBPY3RvYmVyIDE5OTkKCmZ1bmN0aW9uIGMgPSBteWtyb24oYSxiKQppZiBuYXJnaW49 PTIsCiAgW3JhLGNhXT1zaXplKGEpOwogIFtyYixjYl09c2l6ZShiKTsKICAKICBjID0gYSgo b25lcyhyYiwxKSpbMTpyYV0pKDopLChvbmVzKGNiLDEpKlsxOmNhXSkoOikpLiouLi4KICAg ICAgYigoWzE6cmJdJypvbmVzKDEscmEpKSg6KSwoWzE6Y2JdJypvbmVzKDEsY2EpKSg6KSk7 CmVsc2UKICAgIHVzYWdlICgia3JvbiAoYSwgYikiKTsKICBlbmRpZgplbmRmdW5jdGlvbgog IAoKCgo= --Multipart_Fri_Oct_15_13:44:09_1999-1 Content-Type: application/octet-stream Content-Disposition: attachment; filename="test_mykron.m" Content-Transfer-Encoding: base64 CjE7CgojIFJldHVybnMgdGhlIGNwdXRpbWUgc2luY2UgbGFzdCAnbXl0aWMnCmZ1bmN0aW9u IGR0ID0gbXl0aWMoKQkJCiAgc3RhdGljIGxhc3RfbXl0aWMgPSAwIDsKICBbdCx1LHNdID0g Y3B1dGltZSgpIDsKICBkdCA9IHQgLSBsYXN0X215dGljIDsKICBsYXN0X215dGljID0gdCA7 CmVuZGZ1bmN0aW9uCgp0MSA9IHQyID0gMDsKbnRyaWFscyA9IDEwMDsKcmVzID0gemVyb3Mo MyxudHJpYWxzKTsKZm9yIGkgPSAxOm50cmlhbHMsCiAgcz1mbG9vcigzMCpyYW5kKDEsNCkp KzE7CiAgYT1yYW5kbihzKDEpLHMoMikpOwogIGI9cmFuZG4ocygzKSxzKDQpKTsKICByZXMo MSxpKSA9IHByb2QocykgOwogIG15dGljKCk7CiAgazEgPSBrcm9uKGEsYikgOwogIHJlcygy LGkpID0gbXl0aWMoKTsKICBrMiA9IG15a3JvbihhLGIpIDsKICByZXMoMyxpKSA9ICBteXRp YygpOwogIGlmIGFueShtYXgobWF4KGsxLWsyKSkpLAogICAgcHJpbnRmKCJXaG9hISFcbiIp OwogICAgcHJpbnRmKCJUaGlzIHNob3VsZCBiZSAwIDogJTguM2dcbiIsbWF4KG1heChrMS1r MikpKTsKICAgIGtleWJvYXJkCiAgZW5kCiAgIyMgcHJpbnRmKCJpPSVkLHNpemVzIDogICVk IGVsZW1lbnRzXG4iLGkscHJvZChzKSk7CiAgcHJpbnRmKCJ0aW1pbmcgOiBrcm9uOiU4LjNn ICAgbXlrcm9uOiU4LjNnXG4iLHJlcygyLGkpLHJlcygzLGkpKTsKZW5kCgpiazEgPSByZXMo Miw6KSA8IHJlcygzLDopIDsJIyBrMSBiZXR0ZXIKZXhlID0gcmVzKDIsOikgPT0gcmVzKDMs OikgOwkjIGV4LWFlcXVvCnByaW50Zigia3JvbiA6ICVkLCAgZXgtYWVxdW8gJWQsICBteWty b24gJWRcbiIsLi4uCiAgICAgICBzdW0oYmsxKSxzdW0oZXhlKSxzdW0oMS1iazEpKTsKCnBy aW50ZigiXG5XaGVuIGtyb24gaXMgYmV0dGVyXG4iKTsKcHJpbnRmKCJNZWFuIHNpemUgOiAl ZCwgdGltaW5nIDoga3JvbjolOC4zZyAgIG15a3JvbjolOC4zZ1xuIiwuLi4KICAgICAgIG1l YW4ocmVzKDosZmluZChiazEpKScpKTsKCnByaW50ZigiXG5XaGVuIG15a3JvbiBpcyBiZXR0 ZXJcbiIpOwpwcmludGYoIk1lYW4gc2l6ZSA6ICVkLCB0aW1pbmcgOiBrcm9uOiU4LjNnICAg bXlrcm9uOiU4LjNnXG4iLC4uLgogICAgICAgbWVhbihyZXMoOixmaW5kKDEtYmsxKSknKSk7 CgpwcmludGYoIlxuQWx0b2dldGhlclxuIik7CnByaW50ZigiTWVhbiBzaXplIDogJWQsIHRp bWluZyA6IGtyb246JTguM2cgICBteWtyb246JTguM2dcbiIsLi4uCiAgICAgICBtZWFuKHJl cycpKQoKcGxvdChyZXMoMSw6KSxyZXMoMiw6KSwnb2cnLHJlcygxLDopLHJlcygzLDopLCdv YicpIDsK --Multipart_Fri_Oct_15_13:44:09_1999-1--