Пример #1
0
void LPCAnalysis::update(float * newinput, float * newsource, float * output, int numSamples, int p) {

	int i;

	int left= windowsize-pos;

	if(numSamples>=left) {

		for (i=0; i<left;++i) {

			input[pos++]= newinput[i];
		}

		//output up to here
		calculateOutput(newsource, output, windowsize-left, left);

		//update
		numpoles=p;
		calculatePoles();

		pos=0;

		int remainder= numSamples-left;

		for (i=0; i<remainder;++i) {

			input[pos++]= newinput[left+i];

		}

		//output too
		calculateOutput(newsource+left, output+left, pos-remainder, remainder);


	} else {

		for (i=0; i<numSamples;++i) {

			input[pos++]= newinput[i];
		}

		//output
		calculateOutput(newsource, output, pos-numSamples, numSamples);


	}

	//return output;
}
Пример #2
0
void FractalGenerator::calculateRegion( const QRect& region )
{
    GeneratorCore::Input input;
    calculateInput( &input, region );

    GeneratorCore::Output output;
    calculateOutput( &output, region );

    int maxIterations = maximumIterations();
    double threshold = m_settings.detailThreshold();

    m_mutex.unlock();

#if defined( HAVE_SSE2 )
    if ( m_functorSSE2 ) {
        GeneratorCore::generatePreviewSSE2( input, output, m_functorSSE2, maxIterations );
        GeneratorCore::interpolate( output );
        GeneratorCore::generateDetailsSSE2( input, output, m_functorSSE2, maxIterations, threshold );
    } else
#endif
    if ( m_functor ) {
        GeneratorCore::generatePreview( input, output, m_functor, maxIterations );
        GeneratorCore::interpolate( output );
        GeneratorCore::generateDetails( input, output, m_functor, maxIterations, threshold );
    }

    m_mutex.lock();

    appendValidRegion( region );

    if ( !m_preview && m_update == NoUpdate )
        postUpdate( PartialUpdate );
}
Пример #3
0
/**
 *	x - argument vetor
 *	y - value vector (calculated according to script)
 */
void Snakes::on_drawButton_clicked()
{
	double xMin = ui.xMinBox->value();
	double xMax = ui.xMaxBox->value();

	if (xMin >= xMax)
	{
		QMessageBox msgBox;
		msgBox.setText("Error: Xmin > Xmax !");
		msgBox.exec();
		return;
	}
	int pointsCounter = ui.pointsCounterBox->value();
	if (pointsCounter < 1)
	{
		QMessageBox msgBox;
		msgBox.setText("Error: Points counter < 1 !");
		msgBox.exec();
		return;
	}

	//Aquiring and calculating data
	double increment = (xMax - xMin) / pointsCounter;
	std::vector<double> x;
	x.push_back(xMin);
	for (int i=1; i<pointsCounter; i++)
	{
		x.push_back(x.back() + increment);
	}
	
	//TODO name of plot
	//Drawing plot
	for (std::list<QString>::iterator it = scriptFileNames.begin(); it != scriptFileNames.end(); ++it)
	{
		try {
			std::vector<double> y = calculateOutput(x, *it);
			drawPlot(x, y);
		}
		catch (ScriptException ex) {
			//Removing corrupted script file
			QByteArray byteArray = it->toLatin1();
			const char *filename = byteArray.data();
			remove(filename);
			//Removing corrupted script reference
			scriptFileNames.erase(it);

			//Error message
			QMessageBox msgBox;
			msgBox.setText("Error: failed to load script");
			msgBox.exec();
		}
	}
}
Пример #4
0
int main(int argc, char *argv[])
{
    srand(time(NULL));

    float x[208], y[208], weights[3], localError, globalError;
    int outputs[208], patternCount, i, p, iteration, output;

    FILE *fp;
    if ((fp = fopen("test1.txt", "r")) == NULL) {
        printf("Cannot open file.\n");
        exit(1);
    }

    i = 0;
    while (fscanf(fp, "%f %f %d", &x[i], &y[i], &outputs[i]) != EOF) {
        if (outputs[i] == 0) {
            outputs[i] = -1;
        }
        i++;
    }
    patternCount = i;

    weights[0] = randomFloat();
    weights[1] = randomFloat();
    weights[2] = randomFloat();

    iteration = 0;
    do {
        iteration++;
        globalError = 0;
        for (p = 0; p < patternCount; p++) {
            output = calculateOutput(weights, x[p], y[p]);

            localError = outputs[p] - output;
            weights[0] += LEARNING_RATE * localError * x[p];
            weights[1] += LEARNING_RATE * localError * y[p];
            weights[2] += LEARNING_RATE * localError;

            globalError += (localError*localError);
        }

  /* Root Mean Squared Error */
  printf("Iteration %d : RMSE = %.4f\n", iteration,
                     sqrt(globalError/patternCount));
    } while (globalError != 0 && iteration<=MAX_ITERATION);

 printf("\nDecision boundary (line) equation: %.2f*x + %.2f*y + %.2f = 0\n",
             weights[0], weights[1], weights[2]);

    return 0;
}
Пример #5
0
float PID::update(float actual, Timer *t) {
    return calculateOutput(actual, t);
}
Пример #6
0
float PID::update(float actual) {
    return calculateOutput(actual, timer);
}