Package ca.nengo.math

Examples of ca.nengo.math.LinearApproximator


      for (int j = 0; j < evalPoints.length; j++) {
        values[i][j] = component.map(new float[]{evalPoints[j]});
      }
    }

    LinearApproximator approximator = new IndependentDimensionApproximator(evalPoints, values, new int[]{0,1,0}, 2, new ConstantFunction(1,1f), 0f);
    float[] coefficients = approximator.findCoefficients(target);

    float approx;
    for (int j = 0; j < evalPoints.length; j++) {
      approx = 0f;
      for (int i = 0; i < polyCoeffs.length; i++) {
View Full Code Here


        values[i][j] = component.map(evalPoints[j]);
      }
    }
   
    WeightedCostApproximator.Factory factory = new WeightedCostApproximator.Factory(0f);
    LinearApproximator approximator = factory.getApproximator(evalPoints, values);
    float[] coefficients = approximator.findCoefficients(target);
   
    float approx;
    for (int j = 0; j < evalPoints.length; j++) {
      approx = 0f;
      for (int i = 0; i < frequencies.length; i++) {
View Full Code Here

      values[1][i+99] = polys[2].map(evalPoints[i+99]);
      values[2][i+99] = polys[4].map(evalPoints[i+99]);
    }
    comps[1] = new WeightedCostApproximator(evalPoints, values, new ConstantFunction(1,1f), 0f, -1);

    LinearApproximator approximator = new CompositeApproximator(comps, new int[][]{{0},{0}});
    Function target = new Polynomial(new float[]{3f,2f,-2f});
    float[] coefficients = approximator.findCoefficients(target);

    float approx = 0f;

    for (int j=0; j<evalPoints.length; j++) {
      approx = polys[0].map(evalPoints[j]) * coefficients[0];
      approx += polys[1].map(evalPoints[j]) * coefficients[1];
      approx += polys[3].map(evalPoints[j]) * coefficients[2];
//      TestUtil.assertClose(approx, target.map(evalPoints[j]), 0.001f);
      approx = polys[1].map(evalPoints[j]) * coefficients[3];
      approx += polys[2].map(evalPoints[j]) * coefficients[4];
      approx += polys[4].map(evalPoints[j]) * coefficients[5];
//      TestUtil.assertClose(approx, target.map(evalPoints[j]), 0.001f);
    }

    float[][] evalPoints2 = new float[400][];
    float[][] values2 = new float[2][400];
    for (int i=0; i<=19; i++) {
      for (int j=0; j<=19; j++) {
        evalPoints2[i*20+j] = new float[]{i-9,j-9};
        values2[0][i*20+j] = posts[0].map(evalPoints2[i*20+j]);
        values2[1][i*20+j] = posts[1].map(evalPoints2[i*20+j]);
      }
    }
    comps[0] = new WeightedCostApproximator(evalPoints2, values2, new ConstantFunction(1,1f), 0f, -1);
    for (int i=0; i<=19; i++) {
      for (int j=0; j<=19; j++) {
        evalPoints2[i*20+j] = new float[]{i-9,j-9};
        values2[0][i*20+j] = posts[1].map(evalPoints2[i*20+j]);
        values2[1][i*20+j] = posts[0].map(evalPoints2[i*20+j]);
      }
    }
    comps[1] = new WeightedCostApproximator(evalPoints2, values2, new ConstantFunction(1,1f), 0f, -1);

    approximator = new CompositeApproximator(comps, new int[][]{{0,1},{0,1}});
    l = new ArrayList<Serializable>();
    l.add(Integer.valueOf(0));
    l.add(new Polynomial(new float[]{0f,-2f}));
    l.add(Integer.valueOf(1));
    l.add(new Polynomial(new float[]{0f,0f,3f}));
    target = new PostfixFunction(l, "", 2);

    coefficients = approximator.findCoefficients(target);
    for (int j=0; j<evalPoints2.length; j++) {
      approx = posts[0].map(evalPoints2[j]) * coefficients[0];
      approx += posts[1].map(evalPoints2[j]) * coefficients[1];
//      TestUtil.assertClose(approx, target.map(evalPoints2[j]), 0.001f);
      approx = posts[1].map(evalPoints2[j]) * coefficients[2];
 
View Full Code Here

        } else {
          String nodeOrigin=origin.getNodeOrigin();
          // recalculate the decoders
          if (!myReuseApproximators || !myDecodingApproximators.containsKey(nodeOrigin)) {
            float[][] outputs = getConstantOutputs(myEvalPoints, nodeOrigin);
            LinearApproximator approximator = getApproximatorFactory().getApproximator(myEvalPoints, outputs);
            myDecodingApproximators.put(nodeOrigin, approximator);
          }

          origin.rebuildDecoder(myDecodingApproximators.get(nodeOrigin));
        }
View Full Code Here

   * @see ca.nengo.model.nef.NEFEnsemble#addDecodedOrigin(java.lang.String, Function[], String)
   */
    public Origin addDecodedOrigin(String name, Function[] functions, String nodeOrigin) throws StructuralException {
    if (!myReuseApproximators || !myDecodingApproximators.containsKey(nodeOrigin)) {
      float[][] outputs = getConstantOutputs(myEvalPoints, nodeOrigin);
      LinearApproximator approximator = getApproximatorFactory().getApproximator(myEvalPoints, outputs);
      myDecodingApproximators.put(nodeOrigin, approximator);
    }

    DecodedOrigin result = new DecodedOrigin(this, name, getNodes(), nodeOrigin, functions, myDecodingApproximators.get(nodeOrigin));
   
View Full Code Here

      for(int i=0; i < evalSignals.length; i++)
        evalSignalsF[i] = MU.transpose(evalSignals[i].getValues());
     
     
      float[][][] outputs = getSignalOutputs(evalSignals, nodeOrigin);
      LinearApproximator approximator = ((WeightedCostApproximator.Factory)getApproximatorFactory()).getApproximator(evalSignalsF, outputs);
     
      DecodedOrigin result = new DecodedOrigin(this, name, getNodes(), nodeOrigin, targetSignal, approximator);
     
      return addDecodedOrigin(result);
    }
View Full Code Here

        DecodedOrigin origin=((DecodedOrigin) origin2);
        String nodeOrigin=origin.getNodeOrigin();
        // recalculate the decoders
        if (!myReuseApproximators || !myDecodingApproximators.containsKey(nodeOrigin)) {
          float[][] outputs = getConstantOutputs(myEvalPoints, nodeOrigin);
          LinearApproximator approximator = getApproximatorFactory().getApproximator(myEvalPoints, outputs);
          myDecodingApproximators.put(nodeOrigin, approximator);
        }
          origin.redefineNodes(nodes,myDecodingApproximators.get(nodeOrigin));
      }
    }
View Full Code Here

      evalPoints[i] = new float[]{times[i]};
    }
    float[][] values = probe.getData().getValues();
    float[][] valuesT = MU.transpose(values);

    LinearApproximator approximator = myApproximatorFactory.getApproximator(evalPoints, valuesT);
    DecodedOrigin result = new DecodedOrigin(this, name, getNodes(), nodeOrigin, functions, approximator);
    result.setMode(getMode());

        myDecodedOrigins.put(name, result);
        fireVisibleChangeEvent();
View Full Code Here

        }
        values[i][j] = values[i][j] / samples;
      }
    }

    LinearApproximator approximator = myApproximatorFactory.getApproximator(evalPoints, values);
    DecodedOrigin result = new DecodedOrigin(this, name, getNodes(), nodeOrigin, functions, approximator);
    result.setMode(getMode());
    myDecodedOrigins.put(name, result);
    fireVisibleChangeEvent();
    return result;
View Full Code Here

          valuesT[j][k] = values[k+t0][j];
        }
      }
    }

    LinearApproximator approximator = myApproximatorFactory.getApproximator(evalPoints, valuesT);
    DecodedOrigin result = new DecodedOrigin(this, name, getNodes(), nodeOrigin, functions, approximator);
    result.setMode(getMode());

    myDecodedOrigins.put(name, result);
    fireVisibleChangeEvent();
View Full Code Here

TOP

Related Classes of ca.nengo.math.LinearApproximator

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.