1 # create definition for a noise term -- this is reused repeatedly below to
2 # define a separate noise node in each instance
3 noise = Meq.GaussNoise(stddev=0.1);
4 # create a 2x2 complex noise matrix
5 ns.noise(source.name) << Meq.Matrix22(
6 Meq.ToComplex(noise,noise),Meq.ToComplex(noise,noise),
7 Meq.ToComplex(noise,noise),Meq.ToComplex(noise,noise)
8 );
9 # (... some lines skipped... )
10 ns.clean_coh(source.name) << Meq.Matrix22(ns.xx(source.name),
11 ns.xy(source.name),
12 ns.yx(source.name),
13 ns.yy(source.name));
14
15 ns.lmn_minus1(source.name) << Meq.Paster(lmn, n-1, index=2)
16 ns.coherency(source.name) << (ns.clean_coh(source.name) +
17 ns.noise(source.name))/ns.n(source.name)
To get 8 separate noise sources, I create 8 separate noise nodes. The code fragment I pasted actually does just that, even if it's not immediately obvious. Note that the 'noise' variable (line 3 above) is assigned a "node definition" thingy (because of operator = as opposed to <<); whenever this variable is used in the context where a node is expected, it uses the definition to create a separate node each time. The seeding is separate for each node I believe.
