【发布时间】:2017-08-28 12:57:50
【问题描述】:
给定两个向量 x,y 并创建距离矩阵
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 的对角线上有一些零条目,我必须单独计算。
【问题讨论】:
-
请将答案写为作为答案,以便其他人可以看到此问题已解决,或将最有用的答案标记为已接受
标签: matlab matrix sparse-matrix