Reply by RichD September 3, 20152015-09-03
On August 25, sean....@gmail.com wrote:
> There are 2 versions of analog error correction codes that I found. > One is from the biological sciences: > https://clm.utexas.edu/fietelab/Papers/nn.2901.pdf > It uses simple mapping onto phase space to do error correction. > The second uses chaos theory to expand the state space: > http://arxiv.org/abs/1105.1561
I don't grok analog error correction; I thought error correction applied only to digital sequences? For an analog waveform, noise reduction is sensible Explication? -- Rich
Reply by August 30, 20152015-08-30
Here is a crude try out of the analog error correction code in the biological paper:
// Sean O'Connor
package ec;

import java.util.Random;

public class Test {

    static float mul=3.6184848f;
    static float add=.23647478f;
    
    public static void main(String[] args) {
        Random r=new Random();
        float[] ec=new float[4];
        float y=55;
        make(y,ec);
        for(int i=0;i<ec.length;i++){
            ec[i]+=(float)r.nextGaussian()*.1f;
        }
        float max=Float.POSITIVE_INFINITY;
        float pos=0;
        for(float x=0;x<256;x++){
            float t=compare(x,ec);
            System.out.println(t);
            if(t<max){
                max=t;
                pos=x;
            }     
        }
        System.out.println("Min:"+pos+"    "+max);
    }
    
    public static void make(float x,float[] ec){
        for(int i=0;i<ec.length;i++){
            x=(x*mul+add)%1f;
            ec[i]=x;
        }
    }
    
    public static float compare(float x,float[] ec){
        float res=0f;
        for(int i=0;i<ec.length;i++){
            x=(x*mul+add)%1f; 
            res+=Math.abs(x-ec[i]);
        }
        return res;
    }
    
}
Reply by August 30, 20152015-08-30
Here is a crude try out of the analog error correction code in the biological paper: 

package ec;

import java.util.Random;

public class Test {

    static float mul=3.6184848f;
    static float add=.23647478f;
    
    public static void main(String[] args) {
        Random r=new Random();
        float[] ec=new float[4];
        float y=55;
        make(y,ec);
        for(int i=0;i<ec.length;i++){
            ec[i]+=(float)r.nextGaussian()*.1f;
        }
        float max=Float.POSITIVE_INFINITY;
        float pos=0;
        for(float x=0;x<256;x++){
            float t=compare(x,ec);
            System.out.println(t);
            if(t<max){
                max=t;
                pos=x;
            }     
        }
        System.out.println("Min:"+pos+"    "+max);
    }
    
    public static void make(float x,float[] ec){
        for(int i=0;i<ec.length;i++){
            x=(x*mul+add)%1f;
            ec[i]=x;
        }
    }
    
    public static float compare(float x,float[] ec){
        float res=0f;
        for(int i=0;i<ec.length;i++){
            x=(x*mul+add)%1f; 
            res+=Math.abs(x-ec[i]);
        }
        return res;
    }
    
}
Reply by August 27, 20152015-08-27
It is useful to know that FM demodulation is an error correction code too.  I'll more or less leave it there. 
Reply by Tim Wescott August 26, 20152015-08-26
On Tue, 25 Aug 2015 21:13:00 -0700, sean.c4s.vn wrote:

> "Wide band frequency modulation?", now there's a question. Is FM > demodulation an averaging process or actual error correction? It was > pointed out in the first paper that there is a big difference between > the two. Error correction will give you a much better than a sqrt(n) > improvement.
Google Groups is being Google Groups again. Could you please figure out how to properly include context, and to reply to actual posts? Or, use www.dsprelated.com. FM demodulation is an actual error correction process, with the characteristic knee in the output SNR vs. input SNR graph. Shannon mentions it in his foundation paper on communications theory. -- www.wescottdesign.com
Reply by August 26, 20152015-08-26
It's the same idea as error correction in the digital domain.  You can do much better than averaging up to a certain signal to noise ratio. 
Reply by glen herrmannsfeldt August 26, 20152015-08-26
sean.c4s.vn@gmail.com wrote:
> "Wide band frequency modulation?", now there's a question. > Is FM demodulation an averaging process or actual error correction? > It was pointed out in the first paper that there is a big > difference between the two. > Error correction will give you a much better than a sqrt(n) improvement.
Averaging statistically independent values gives sqrt(N). I am not so sure what you mean by "error correction", but if the signals being averaged are not statistically independent, it could be different. Physics uses coherent vs. incoherent for a similar question. -- glen
Reply by August 26, 20152015-08-26
"Wide band frequency modulation?", now there's a question.  Is FM demodulation an averaging process or actual error correction?  It was pointed out in the first paper that there is a big difference between the two. Error correction will give you a much better than a sqrt(n) improvement.
Reply by Tim Wescott August 25, 20152015-08-25
On Tue, 25 Aug 2015 15:12:16 -0700, sean.c4s.vn wrote:

> There are 2 versions of analog error correction codes that I found. > One is from the biological sciences: > https://clm.utexas.edu/fietelab/Papers/nn.2901.pdf It uses simple > mapping onto phase space to do error correction. > > The second uses chaos theory to expand the state space: > http://arxiv.org/abs/1105.1561 > > Neither of them give a really clear description of the decoding > algorithm used. I would say it was rather messy in both cases. > > I also have a third method myself using random projections, but I'm not > sure whether it works better than other 2 ideas. I used a version of it > to improve some neural net code. But after reading the other papers I > have a better understanding of how to improve it. > > For the first phase space based method I think using the the golden > ratio would be a smart move. In light of what wiki has to say about > additive recurrences here: > https://en.wikipedia.org/wiki/Low-discrepancy_sequence
Wide-band frequency modulation. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com
Reply by August 25, 20152015-08-25
There are 2 versions of analog error correction codes that I found. 
One is from the biological sciences: 
https://clm.utexas.edu/fietelab/Papers/nn.2901.pdf 
It uses simple mapping onto phase space to do error correction. 

The second uses chaos theory to expand the state space: 
http://arxiv.org/abs/1105.1561 

Neither of them give a really clear description of the decoding algorithm used.  I would say it was rather messy in both cases. 

I also have a third method myself using random projections, but I'm not sure whether it works better than other 2 ideas.  I used a version of it to improve some neural net code.  But after reading the other papers I have a better understanding of how to improve it.
  
For the first phase space based method I think using the the golden ratio would be a smart move.  In light of what wiki has to say about additive recurrences here: 
https://en.wikipedia.org/wiki/Low-discrepancy_sequence