I zwei Vektoren x gegeben werde, y und i schaffen die DistanzmatrixEvaluieren arrayfun nur bei Nicht-Null-Einträge zu unterschiedlichen Ergebnissen
B=pdist2(x,y);
Jetzt bewerten i eine bestimmte Funktion f (x),
s=5;
if s-x > 0
y=(1-x/s)^4*(1+4*x/s)/20;
else
y=0;
end
wo ist s etwas parameter. Durch Vordefinieren von s und Verwenden von
ist die Matrix A positiv definierbar wie gewünscht.
Da die Matrix spärlich ist, möchte ich f (x) nur bei den Werten auswerten, die ungleich Null zurückgegeben werden. Mein Versuch war
B=pdist2(x,y);
B(B>s)=0;
B=B/s;
indexB=find(B);
Atmp=arrayfun(@f,B(indexB));
A(indexB)=Atmp;
Aber jetzt A ist nicht positiv definit und hat weniger Einträge ungleich Null als zuvor. Kann mir jemand erklären, was ich mache?
Danke allen, ich habe den Fehler gefunden. Da waren einige Null Einträge auf der Diagonale in B, die ich separat berechnen musste.
Bitte schreiben Sie die Antwort * als Antwort *, damit andere sehen, dass diese Frage gelöst ist, oder markieren Sie die nützlichste Antwort als akzeptiert – Wolfie