From octave-sources-request at bevo dot che dot wisc dot edu Sun Nov 23 02:24:23 2003 Subject: 'map' function in Octave-Forge From: Tomer Altman To: octave-sources at bevo dot che dot wisc dot edu, Date: Sun, 23 Nov 2003 00:23:11 -0800 (PST) This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime at docserver dot cac dot washington dot edu for more info. --8323328-1165501454-1069575791=:18169 Content-Type: TEXT/PLAIN; charset=US-ASCII Introducing 'map': ## usage: [ result ] = map ( FUN_STR, ARG1, ... ) ## ## map, like LISP's ( & numerous other language's ) function for ## iterating the result of a function applied to each of the data ## structure's elements in turn. The results are stored in the ## corresponding input's place. For now, just will work with cells ##and ## matrices, but support for structs are intended for future ##versions. ## Also, only "postfix" functions ( like "min(a,b,c,..)" ) are ## supported. ## ## Example: ## ## octave> A ## A ## { ## [1,1] = 0.0096243 ## [2,1] = 0.82781 ## [1,2] = 0.052571 ## [2,2] = 0.84645 ## } ## octave> B ## B = ## { ## [1,1] = 0.75563 ## [2,1] = 0.84858 ## [1,2] = 0.16765 ## [2,2] = 0.85477 ## } ## octave> map("min",A,B) ## ans = ## { ## [1,1] = 0.0096243 ## [2,1] = 0.82781 ## [1,2] = 0.052571 ## [2,2] = 0.84645 ## } Uploaded to Octave-Forge: octave-forge/main/miscellaneous --- Cheers, ~Tomer --8323328-1165501454-1069575791=:18169 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="map.m" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: map M-file Content-Disposition: attachment; filename="map.m" ZnVuY3Rpb24gcmV0dXJuX3R5cGUgPSBtYXAgKGZ1bl9zdHIsZGF0YV9zdHJ1 Y3QsdmFyYXJnaW4pDQoNCiAgIyMgQ29weXJpZ2h0IChDKSAyMDAzIFRvbWVy IEFsdG1hbg0KICAjIw0KICAjIyBPY3RhdmUgaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQogICMjIG1vZGlmeSBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0K ICAjIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOw0KICAjIyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KICAjIw0KICAjIyBP Y3RhdmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwNCiAgIyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCiAgIyMgd2FycmFudHkgb2YgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KICAj IyBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZQ0KICAjIyBkZXRhaWxzLg0KICAjIw0KICAjIyBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMNCiAgIyMgTGljZW5zZSBhbG9uZyB3aXRoIE9jdGF2ZTsgc2VlIHRo ZSBmaWxlIENPUFlJTkcuICBJZiBub3QsDQogICMjIHdyaXRlIHRvIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtDQog ICMjIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuDQoN CiAgIyMgdXNhZ2U6IFsgcmVzdWx0IF0gPSBtYXAgKCBGVU5fU1RSLCBBUkcx LCAuLi4gKQ0KICAjIw0KICAjIyBtYXAsIGxpa2UgTElTUCdzICggJiBudW1l cm91cyBvdGhlciBsYW5ndWFnZSdzICkgZnVuY3Rpb24gZm9yDQogICMjIGl0 ZXJhdGluZyB0aGUgcmVzdWx0IG9mIGEgZnVuY3Rpb24gYXBwbGllZCB0byBl YWNoIG9mIHRoZSBkYXRhDQogICMjIHN0cnVjdHVyZSdzIGVsZW1lbnRzIGlu IHR1cm4uIFRoZSByZXN1bHRzIGFyZSBzdG9yZWQgaW4gdGhlDQogICMjIGNv cnJlc3BvbmRpbmcgaW5wdXQncyBwbGFjZS4gRm9yIG5vdywganVzdCB3aWxs IHdvcmsgd2l0aCBjZWxscyBhbmQNCiAgIyMgbWF0cmljZXMsIGJ1dCBzdXBw b3J0IGZvciBzdHJ1Y3RzIGFyZSBpbnRlbmRlZCBmb3IgZnV0dXJlIHZlcnNp b25zLg0KICAjIyBBbHNvLCBvbmx5ICJwb3N0Zml4IiBmdW5jdGlvbnMgKCBs aWtlICJtaW4oYSxiLGMsLi4pIiApIGFyZQ0KICAjIyBzdXBwb3J0ZWQuDQog ICMjDQogICMjIEV4YW1wbGU6DQogICMjDQogICMjIG9jdGF2ZT4gQQ0KICAj IyBBIA0KICAjIyB7DQogICMjICAgWzEsMV0gPSAwLjAwOTYyNDMNCiAgIyMg ICBbMiwxXSA9IDAuODI3ODENCiAgIyMgICBbMSwyXSA9IDAuMDUyNTcxDQog ICMjICAgWzIsMl0gPSAwLjg0NjQ1DQogICMjIH0NCiAgIyMgb2N0YXZlPiBC DQogICMjIEIgPQ0KICAjIyB7DQogICMjICAgWzEsMV0gPSAwLjc1NTYzDQog ICMjICAgWzIsMV0gPSAwLjg0ODU4DQogICMjICAgWzEsMl0gPSAwLjE2NzY1 DQogICMjICAgWzIsMl0gPSAwLjg1NDc3DQogICMjIH0NCiAgIyMgb2N0YXZl PiBtYXAoIm1pbiIsQSxCKQ0KICAjIyBhbnMgPQ0KICAjIyB7DQogICMjICAg WzEsMV0gPSAwLjAwOTYyNDMNCiAgIyMgICBbMiwxXSA9IDAuODI3ODENCiAg IyMgICBbMSwyXSA9IDAuMDUyNTcxDQogICMjICAgWzIsMl0gPSAwLjg0NjQ1 DQogICMjIH0NCiANCiAgIyMgQXV0aG9yOiBUb21lciBBbHRtYW4NCiAgIyMg S2V5d29yZHM6IG1hcCBtYXRyaXggY2VsbCANCiAgIyMgTWFpbnRhaW5lcjog VG9tZXIgQWx0bWFuDQogICMjIENyZWF0ZWQ6IE5vdmVtYmVyIDE1LCAyMDAz DQogICMjIFZlcnNpb246IDAuMQ0KICANCiAgaWYgKG5hcmdpbjwyKQ0KDQog ICAgZXJyb3IoIm1hcDogaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHM7 IGV4cGVjdGluZyBhdCBsZWFzdCB0d28uIik7DQoNCiAgZWxzZWlmICggIWlz c3RyKGZ1bl9zdHIpICkNCg0KICAgIGVycm9yKCJtYXA6IGZpcnN0IGFyZ3Vt ZW50IG11c3QgYmUgYSBzdHJpbmc6ICIsIGZ1bl9zdHIpOw0KDQogIGVsc2Vp ZiAoICFleGlzdChmdW5fc3RyKSApDQoNCiAgICBlcnJvcigibWFwOiBmaXJz dCBhcmd1bWVudCBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1lLiIpOw0K DQogIGVsc2VpZiAoICEoIGlzbnVtZXJpYyhkYXRhX3N0cnVjdCkgfHwgaXNj ZWxsKGRhdGFfc3RydWN0KSApICkNCg0KICAgIGVycm9yKCJtYXA6IHNlY29u ZCBhcmd1bWVudCBtdXN0IGJlIGVpdGhlciBhIG1hdHJpeCBvciBhIGNlbGwg b2JqZWN0OiIpOw0KDQogIGVsc2UNCg0KICAgIFsgcm93cywgY29scyBdID0g c2l6ZShkYXRhX3N0cnVjdCk7DQoNCiAgICBpZiAoIGlzY2VsbChkYXRhX3N0 cnVjdCkgKQ0KDQogICAgICBpbmRleF9zdHIgPSAie2ksan0iOw0KDQogICAg ICByZXR1cm5fdHlwZSA9IGNlbGwocm93cyxjb2xzKTsNCg0KICAgIGVsc2UN Cg0KICAgICAgaW5kZXhfc3RyID0gIihpLGopIjsNCg0KICAgICAgcmV0dXJu X3R5cGUgPSB6ZXJvcyhyb3dzLGNvbHMpOw0KDQogICAgZW5kaWYNCiAgICAg IA0KICAgICMjIExpc3Qtby1pbmZpeC1vcGVyYXRvcnM6ICssIC0sIC8sICos ICYsICYmLCB8LCB8fCwgXCwgXiwgKiosIDwsIDw9LA0KICAgICMjID4sID49 LCA9PSwgIT0sIH49LCA8PiwgPSANCg0KICAgIGZvciBpPTE6cm93cw0KCQ0K ICAgICAgZm9yIGo9MTpjb2xzDQoJDQoJIyNyZXR1cm5fdHlwZXtpLGp9ID0g ZmV2YWwoIGZ1bl9zdHIsIGRhdGFfc3RydWN0e2ksan0gKTsNCgkNCglMSFMg PSBbInJldHVybl90eXBlIixpbmRleF9zdHIsIiA9ICJdOw0KCQ0KCWZ1bmNh bGwgPSBbZnVuX3N0ciwgIiAoICJdOw0KCQ0KCWRhdGEgPSBbImRhdGFfc3Ry dWN0IixpbmRleF9zdHIsIiwgIl07DQoJDQoJb3RoZXJkYXRhID0gY29sdW1u cyh2YXJhcmdpbik7DQoJDQoJZm9yIGs9MToob3RoZXJkYXRhLTEpDQoJICAN CgkgIGRhdGEgPSBbZGF0YSwidmFyYXJnaW57MSwiLGludDJzdHIoayksIn0i LGluZGV4X3N0ciwiLCAiXTsNCgkgIA0KCWVuZGZvcg0KCQ0KCWRhdGEgPSBb ZGF0YSwidmFyYXJnaW57MSwiLGludDJzdHIob3RoZXJkYXRhKSwifSIsaW5k ZXhfc3RyLCIgKTsgIl07DQoJDQoJbWFwX3N0ciA9IFtMSFMsZnVuY2FsbCxk YXRhXTsNCgkNCgllcnJvcl9zdHIgPSBbImVycm9yKFwibWFwOiAiLGVycm9y X3RleHQsIlxuXCIgKSJdOw0KCQ0KCWV2YWwobWFwX3N0cixlcnJvcl9zdHIp Ow0KCQkgDQogICAgICBlbmRmb3INCg0KICAgIGVuZGZvcg0KDQogICAgZGF0 YV9zdHJ1Y3QgPSB7fTsNCg0KICBlbmRpZg0KDQplbmRmdW5jdGlvbg== --8323328-1165501454-1069575791=:18169--