Der folgende Aufruf:RBF Interpolation: LinAlgError: singuläre Matrix
rbf = Rbf(points[0], points[1], values,epsilon=2)
führt zu einem Fehler:
LinAlgError: singular matrix
mit den folgenden Werten:
In [3]: points
Out[3]:
(array([71, 50, 48, 84, 71, 74, 89, 76, 70, 77, 74, 79, 83, 71, 72, 78, 73,
84, 75, 65, 73, 82, 48, 86, 74, 86, 66, 74, 68, 74, 81, 74, 88, 66,
57, 50, 72, 86, 72, 92, 81, 67, 82, 78, 69, 70, 73, 71, 76, 72, 74,
75]),
array([32, 34, 4, 35, 1, 7, 47, 16, 37, 14, 65, 18, 32, 4, 3, 27, 25,
34, 18, 25, 6, 25, 34, 41, 16, 35, 44, 2, 32, 2, 37, 60, 45, 32,
33, 42, 54, 31, 18, 38, 24, 18, 45, 48, 9, 63, 56, 45, 9, 59, 5,
12]))
In [4]: values
Out[4]:
array([ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
Was kann ich tun, um Vermeiden Sie es und lösen Sie immer noch das Interpolationsproblem?
Wenn alle Werte 1 sind, dann wissen Sie bereits, dass der interpolierte Wert an jedem Punkt auch 1 sein sollte. Und wenn die Werte nicht alle 1 sind, dann stoßen Sie (wahrscheinlich?) Nicht auf den singulären Matrixfehler. – unutbu
@unutbu - Ich dachte, rbf würde einen RBF um jeden Wert verwenden. Sollten die Werte nicht abnehmen, wenn ich mich für jede RBF von jeder 1 wegbewege? (d. h. ich würde für jeden Ort eine Summe von Gaussians erhalten) – Josh
Die ** Summe ** der radialen Basisfunktionen muss an jedem der durch "Punkte" angegebenen Orte gleich 1 sein. Die einzelnen RBFs sind an diesen Punkten nicht gleich 1. Nur die Summe muss gleich 1 sein. Das Problem ist, dass es keine Summe von RBF gibt, die an allen diesen Punkten gleich 1 sein kann. – unutbu