Ich brauche eindimensionales Array der Größe N zu zweidimensionalem Array der Größe A * B> N. uns umwandeln läßt solchen Fall nehmen:Converting 1-D-Array zu 2-D-Matrix mit überlappenden
int oneDimensionalArray[6] = {7, 8, 10, 11, 12, 15};
//then the second array would be
int twoDimensionalArray[2][4] = {{7, 8, 10, 11},
{10, 11, 12, 15}};
Dies wird in der sogenannten Overlap-Add-Methode verwendet, die in der digitalen Klangverarbeitung verwendet wird. Ich habe diesen Ansatz versucht, die falschen Ergebnisse liefert:
for(unsigned long i = 0; i < amountOfWindows; i++)
{
for(unsigned long j = hopSize; j < windowLength; j++)
{
//buffer without the overlapping
if((i * amountOfWindows + j) >= bufferLength)
break;
windowedBuffer[i][j] = unwindowedBuffer[i * amountOfWindows + j];
}
}
for(unsigned long i = 1; i < amountOfWindows; i++)
{
for(unsigned long j = 0; j < hopSize; j++)
{
// Filling the overlapping region
windowedBuffer[i][j] = windowedBuffer[i-1][windowLength - hopSize + i];
}
}
ich auch die Beziehung habe versuche die Suche nach der Modulo-Operation verwenden, aber ich kann nicht die richtigen finden. Dies ist die eine, die ich versucht habe:
windowedBuffer[m][n % (windowLength - hopSize)] = unwindowedBuffer[n];
Und 'j + 2 * i'? – Jarod42
Was meinst du? Was ist das 2? – Kokos34
Ihre Überlappung ist '2'. – Jarod42