我給定兩個向量的x,y評估arrayfun和我創建距離矩陣僅在非零項不同的結果
B=pdist2(x,y);
現在我評估特定函數f(x),
s=5;
if s-x > 0
y=(1-x/s)^4*(1+4*x/s)/20;
else
y=0;
end
s是一些參數。通過預定義s並使用
A=arrayfun(@f,B);
矩陣A如所期望的那樣是正定的。
由於矩陣是稀疏的,我只想在將返回非零值的情況下評估f(x)。我的嘗試是
B=pdist2(x,y);
B(B>s)=0;
B=B/s;
indexB=find(B);
Atmp=arrayfun(@f,B(indexB));
A(indexB)=Atmp;
但是現在A不是肯定的並且具有比以前更少的非零入口。有人能解釋我在做什麼/正在發生什麼?
謝謝大家,我發現了錯誤。在那裏,我必須單獨計算B中對角線上的零個條目。
請將答案*寫爲答案*以便其他人可以看到此問題已解決,或將最有用的答案標記爲已接受 – Wolfie