thanks for your reply. I’m very happy that this is going forward.
On 08 Mar 2016, at 05:16, Ludwig Stephan (CR/AEH4) <address@hidden
Just to make it clear (to myself):
alpha_n changes randomly.
BUT: alpha_n depends on theta, which in turn does a random walk in the code
Yes, theta does a random walk back and forth between [-pi; pi]. Since alpha_n is calculated as
float alpha_n = (2*M_PI*n - M_PI + d_theta)/4*d_N;
it is oscillating in a segment/part of the spectrum not the complete [-pi; pi] interval. But, that leads to the same amplified effect described earlier.
I don’t know when you checked my IPython notebook. I added another plot, to show how (i think that) the variables behave
> "Efficient Simulation of Rayleigh Fading with Enhanced De-Correlation Properties” by Alenka G. Zajic and Gordon L. Stüber > the authors refer to the paper, stating that: Ahh, that is a very good reference. Actually I was searching for that in my literature database but did not find it again. > "To improve on previously reported models, Zheng and Xiao proposed several new statistical models -. By allowing all > three parameter sets (amplitudes, phases, and Doppler frequencies) to be random variables, Zheng and Xiao’s models obtain > statistical properties similar to ones required by the reference model. However, the models are no longer ergodic." > To me it looks like the model was _fixed_ by introducing this random walk that is supposed to make the model great ergodic > again. I guess this follows some paper or book since the code mentions a table > d_step( powf(0.00125*fDTs, 1.1) ), // max step size approximated from Table 2
No, the model of Zajic/Stüber is ergodic. But yes, they fixed the previous model by choosing the parameters randomly – but constant over time and not updating for every sample. And Table II does definitely not refer to the one in their paper
That was maybe a bit confusing. I cited how Zajic/Stüber are talking about the GNU Radio model, to highlight that it is by default non-ergodic. I was not talking about the Zajic/Stüber model.
I try to summarize all the efforts · Use sin and cos in the factors for getting (almost) uncorrelated I and Q shares of the complex random variable · Introduce a random phase (but constant) argument into every cos(f_D*t) term in order to make the system WSS · In order to make the signals ergodic (ever draw of parameters has the equal statistics, which also yield uncorrelated processes) let sin(f_D*t) and cos(f_D*t) have different random (but constant) phases, but thake the cos/sin factors from identical angles of arrival · MEDS method produces WSS process of intended auto-correlation function, but introduces correlation between different random process.
· The Zheng/Xiao model combines all previous advantages: still constant but different phases
· The Zajic/Stüber model combines all previosu advantages, especially it has a random but constant phase (-> WSS), is ergodic, has uncorrelated I/Q and uncorrelated processes, while converging faster (requires smaller N).
As far as I understand it’s either ergodic, but has suboptimal autocorrelation; or it’s non-ergodic.
=> In conclusion and because nobody remembers why this code was written like that, I vote for adapting the model to Zajic/Stüber by removing the update_theta function and their call (and then unused variables like d_step). Their implementation is one of the best-known ones.
Sounds reasonable to me, but I’m not an expert.
I think that when creating a TDL channel with multiple independent faders, one would have to set the parameters of all sinusoids in a special way, i.e., one would have to adapt the interface to the flat fader block, too.
…or in other words, the implementation would, at least, not be trivial :-) Would you be interested to work on that?
AFAIS, another option would be to remove theta and change the docs to state that the model should not be used with one long simulation run, but with multiple repetitions.
In general, I think that the current random walk is a pretty cool idea. In the best case we would find a paper that describes this method. Maybe, we wait some more time to see if someone knows about that.
Anyhow, I think that we should, at least, wait for an opinion of one of the developers, otherwise you might waste time implementing a new model and nobody cares.