Re: slots with 2 indexed array?
- To: mathgroup at smc.vnet.net
- Subject: [mg95623] Re: [mg95553] slots with 2 indexed array?
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Fri, 23 Jan 2009 05:05:54 -0500 (EST)
- Reply-to: hanlonr at cox.net
data = {{1, 2, 3}, {4, 5, 6}}; Map[g, data, {2}] {{g[1], g[2], g[3]}, {g[4], g[5], g[6]}} data = sigs = Table[10 i + j, {i, 4000}, {j, 1024}]; len = Length[sigs]; f = If[# >= 2048, # - 2048, # + 2048] &; Timing[For[i = 1, i < len + 1, i++, sigs[[i]] = f /@ sigs[[i]]]] {1.3219,Null} Timing[res = Map[f, data, {2}];] {0.833989,Null} Verifying that Map performs the same function sigs == res True Bob Hanlon ---- "wb at wavebounce.com" <wb at wavebounce.com> wrote: ============= First I produce some dummy data, 4000 of what I call signals, 1024 samples each. sigs = Table[10 i + j, {i, 4000}, {j, 1024}]; len = Length[sigs]; I'd like to modify these signals. The For statement below works. I can use a slot function on each of the sigs specified by i. For[i = 1, i < len + 1, i++, sigs[[i]] = If[# >= 2048, # - 2048, # + 2048] & /@ sigs[[i]] ] Surely there's a way to use slots on a double indexed array but I haven't found it yet. If I try to let # represent every entry in sigs, the If statement isn't processed: sigs = If[# >= 2048, # - 2048, # + 2048] & /@ sigs; I tried Which that Help says uses HoldAll but that doesn't work either; Which[] still isn't evaluated. I tried using #2 and ## instead of # but that doesn't work. In reading about slot functions I haven't seen any examples using multi indexed arrays. Could someone please give me a hint on how to pull this off? -- if this can be done with slots. Thanks.