Как реализовать матрицу, представляющую разности второго порядка, для решения сглаживания Уиттекера?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как реализовать матрицу, представляющую разности второго порядка, для решения сглаживания Уиттекера?

Сообщение Anonymous »

Я пытаюсь использовать Уиттакера-Эйлерса для сглаживания зашумленных данных. Используя эту статью, чтобы создать метод, который находит A в уравнениях 11 и 12 на странице, которую я написал:

Код: Выделить всё

private LUDecomposition buildMatrices(int dataSize, double lambda, int filterOrder) {
RealMatrix identityMatrix = MatrixUtils.createRealMatrix(dataSize, dataSize);
RealMatrix orderMatrix = MatrixUtils.createRealMatrix(dataSize - filterOrder, dataSize);

for (int i = 0; i < dataSize; i++) {
identityMatrix.setEntry(i, i, 1);

if (i < dataSize - filterOrder) {
switch (filterOrder) {
case 1:
orderMatrix.setEntry(i, i, -1);
orderMatrix.setEntry(i, i + 1, 1);
break;

case 2:
default:
orderMatrix.setEntry(i, i, 1);
orderMatrix.setEntry(i, i + 1, -2);
orderMatrix.setEntry(i, i + 2, 1);
break;
}
}
}

RealMatrix A = orderMatrix.transpose().scalarMultiply(lambda).multiply(orderMatrix).add(identityMatrix);
return new LUDecomposition(A);
}
Затем используется возвращенная LUDecomposition

Код: Выделить всё

private void calculateWhittakerSegment(int endIndex, int period) {
RealVector measValues = new ArrayRealVector(
ArrayUtils.subarray(data.getYValues(), endIndex - period, endIndex));

RealVector y = luDecomposition.getP().multiply(MatrixUtils.inverse(luDecomposition.getL())).operate(measValues);

RealVector adjValues = MatrixUtils.inverse(luDecomposition.getU()).operate(y);
}
Использование фильтра с порядком 1 (уравнение 8 в статье) дает приемлемые результаты
Результаты 1-го порядка
Но использование фильтра Порядок 2 (уравнение 17 в статье) не дает
результатов 2-го порядка
Я изменил порядок операций при решении для A, но это не привело к каким-либо изменениям результатов.

Подробнее здесь: https://stackoverflow.com/questions/783 ... olve-whitt
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»