Exemplo n.º 1
0
		private DenseMatrix CalculateSmoothingFilters(int polynomialOrder, int filterLength)
		{
			int m = (filterLength - 1) / 2;
			var denseMatrix = new DenseMatrix(filterLength, polynomialOrder + 1);

			for (int i = -m; i <= m; i++)
			{
				for (int j = 0; j <= polynomialOrder; j++)
				{
					denseMatrix[i + m, j] = Math.Pow(i, j);
				}
			}

			var sTranspose = (DenseMatrix)denseMatrix.ConjugateTranspose();
			var f = sTranspose * denseMatrix;
			var fInverse = (DenseMatrix)f.LU().Solve(DenseMatrix.CreateIdentity(f.ColumnCount));
			var smoothingFilters = denseMatrix * fInverse * sTranspose;

			return smoothingFilters;
		}