>Hello,
>
>I am trying to add 1/f noise to my CDR data input line which is
generated
>using a Bernoulli binary block in simulink. However, when I use "Phase
>Noise" block in simulink, it generates error as phase noise expects
>complex input while Bernoulli output is real. Could anyone help me how
to
>get around this problem? Or do you guys know any other method to add 1/f
>noise to input data.
>
>Thanks
>
>
>
Pedro,
phasse noise can be modelled as exp(j*ph(t)), where ph(t) is the random
phase vector.
The interesting point is the power spectral density(PSD) of this ph(t) has
some shape which is defined in literature by the equation as
S(f)=k0+k1*1/f+k2*(1/f^2)+k3*(1/f^3)+k4*(1/f^4)
where k0...k4 are the constants chosen carefully according to the shape of
PSD.
when k0=k2=k3=k4=0
S(f)=k1*1/f
when plotted S(f) against frequency, we can see a constant decrease in
S(f) by -10dB/dec.
Any signal which has above mentioned S(f) is considered as noise with 1/f
characteristics. Also known as pink noise.
the method to generate pink noise is:
first find the Power Spectral Density S(f), of 1/f noise by choosing k1.
and the equation S(f)=k1*1/f.
then find a random vector which has same PSD as of pink noise.
Did you get my point????
Kind regards
Reply by pedro904●February 8, 20072007-02-08
>pedro904 wrote:
>
>>>pedro904 wrote:
>>>
>>>>Hello,
>>>>
>>>>I am trying to add 1/f noise to my CDR data input line which is
>>
>> generated
>>
>>>>using a Bernoulli binary block in simulink. However, when I use
"Phase
>>>>Noise" block in simulink, it generates error as phase noise expects
>>>>complex input while Bernoulli output is real. Could anyone help me
how
>>
>> to
>>
>>>>get around this problem? Or do you guys know any other method to add
>>
>> 1/f
>>
>>>>noise to input data.
>>>>
>>>>Thanks
>>>>
>>>>
>>>
>>>Use two independent Bernoulli blocks, multiply the output of one by i,
>>>and add the result to the the output of the other.
>>>
>>>Voila -- instant complex numbers.
>>>
>>>--
>>>
>> Yes, but the main issue is adding 1/f noise to a signal. Has anybody
have
>> some written script for this? How can I add 1/f noise to some random
>> data??
>
>Whoops -- I misread your problem.
>
>Surely there's already a pink noise block? If not, why not generate
>white noise, run it through an appropriate filter to approximate pink
>noise, then use it? Assuming the white noise block outputs real data
>then your result would also be real.
>
>Pink noise is a funny thing; it drops off at 10dB/decade so you can't
>just run white noise into an integrator or a low-pass. I could see
>making my own pink noise generator without double checking the
>literature, but I wouldn't assume it to be anything but a hack -- and I
>think quite highly of myself. Do some web searches to find the correct
>algorithm, and go with that.
>
>I wouldn't expect a "phase noise" block to output pink noise -- I would
>expect it to be white. If you have reason to believe that it outputs
>pink noise, however, you can use or make a block that extracts just the
>real part of the data.
>
>--
>
>Tim Wescott
>Wescott Design Services
>http://www.wescottdesign.com
>
>Posting from Google? See http://cfaj.freeshell.org/google/
>
>"Applied Control Theory for Embedded Systems" came out in April.
>See details at http://www.wescottdesign.com/actfes/actfes.html
>
So let me rephrase myself. I actually want to add pink noise (1/f noise)
to the frequency of the input data. In other words, adding jitter but with
1/f characteristic. So it's not an amplitude noise. Any thoughts? Maybe
it's easy and I am missing something?
Thanks
Reply by Tim Wescott●February 8, 20072007-02-08
pedro904 wrote:
>>pedro904 wrote:
>>
>>>Hello,
>>>
>>>I am trying to add 1/f noise to my CDR data input line which is
>
> generated
>
>>>using a Bernoulli binary block in simulink. However, when I use "Phase
>>>Noise" block in simulink, it generates error as phase noise expects
>>>complex input while Bernoulli output is real. Could anyone help me how
>
> to
>
>>>get around this problem? Or do you guys know any other method to add
>
> 1/f
>
>>>noise to input data.
>>>
>>>Thanks
>>>
>>>
>>
>>Use two independent Bernoulli blocks, multiply the output of one by i,
>>and add the result to the the output of the other.
>>
>>Voila -- instant complex numbers.
>>
>>--
>>
> Yes, but the main issue is adding 1/f noise to a signal. Has anybody have
> some written script for this? How can I add 1/f noise to some random
> data??
Whoops -- I misread your problem.
Surely there's already a pink noise block? If not, why not generate
white noise, run it through an appropriate filter to approximate pink
noise, then use it? Assuming the white noise block outputs real data
then your result would also be real.
Pink noise is a funny thing; it drops off at 10dB/decade so you can't
just run white noise into an integrator or a low-pass. I could see
making my own pink noise generator without double checking the
literature, but I wouldn't assume it to be anything but a hack -- and I
think quite highly of myself. Do some web searches to find the correct
algorithm, and go with that.
I wouldn't expect a "phase noise" block to output pink noise -- I would
expect it to be white. If you have reason to believe that it outputs
pink noise, however, you can use or make a block that extracts just the
real part of the data.
--
Tim Wescott
Wescott Design Services
http://www.wescottdesign.com
Posting from Google? See http://cfaj.freeshell.org/google/
"Applied Control Theory for Embedded Systems" came out in April.
See details at http://www.wescottdesign.com/actfes/actfes.html
Reply by Scott L●February 8, 20072007-02-08
On Feb 8, 9:50 am, "pedro904" <pedram.sam...@gmail.com> wrote:
> Yes, but the main issue is adding 1/f noise to a signal. Has anybody have
> some written script for this? How can I add 1/f noise to some random
> data??
Can't you just add a Brownian signal to it?
Scott
Reply by pedro904●February 8, 20072007-02-08
>pedro904 wrote:
>> Hello,
>>
>> I am trying to add 1/f noise to my CDR data input line which is
generated
>> using a Bernoulli binary block in simulink. However, when I use "Phase
>> Noise" block in simulink, it generates error as phase noise expects
>> complex input while Bernoulli output is real. Could anyone help me how
to
>> get around this problem? Or do you guys know any other method to add
1/f
>> noise to input data.
>>
>> Thanks
>>
>>
>Use two independent Bernoulli blocks, multiply the output of one by i,
>and add the result to the the output of the other.
>
>Voila -- instant complex numbers.
>
>--
>
>Tim Wescott
>Wescott Design Services
>http://www.wescottdesign.com
>
>Posting from Google? See http://cfaj.freeshell.org/google/
>
>"Applied Control Theory for Embedded Systems" came out in April.
>See details at http://www.wescottdesign.com/actfes/actfes.html
>
Yes, but the main issue is adding 1/f noise to a signal. Has anybody have
some written script for this? How can I add 1/f noise to some random
data??
Thanks
Reply by Tim Wescott●February 8, 20072007-02-08
pedro904 wrote:
> Hello,
>
> I am trying to add 1/f noise to my CDR data input line which is generated
> using a Bernoulli binary block in simulink. However, when I use "Phase
> Noise" block in simulink, it generates error as phase noise expects
> complex input while Bernoulli output is real. Could anyone help me how to
> get around this problem? Or do you guys know any other method to add 1/f
> noise to input data.
>
> Thanks
>
>
Hello,
I am trying to add 1/f noise to my CDR data input line which is generated
using a Bernoulli binary block in simulink. However, when I use "Phase
Noise" block in simulink, it generates error as phase noise expects
complex input while Bernoulli output is real. Could anyone help me how to
get around this problem? Or do you guys know any other method to add 1/f
noise to input data.
Thanks