【发布时间】:2016-01-01 14:43:52
【问题描述】:
我得到了两个稀疏矩阵 A 和 B,它们具有相同的稀疏模式(所有非零值都在完全相同的位置):
i = randi(1000,[50,1]);
j = randi(1000,[50,1]);
a = rand(50,1);
b = rand(50,1);
A = sparse(i,j,a,1000,1000);
B = sparse(i,j,b,1000,1000);
我想只为非零有效地计算 exp(A-B),并将其保存回 A。 我尝试使用 spfun 来完成该任务:
f = @(x,y) exp(x-y);
A = spfun(f,A,B);
但我在 spfun 中出现错误提示:“输入参数过多。” 任何人都可以提出一种有效的计算方法吗? 应该计算多次。
谢谢!
编辑:mikkola 建议 A = spfun(@f,A-B) 解决了这个问题,但问题仍然是如何使用无法使用相同技巧解决的两个变量的函数来做到这一点。例如:
g = @(x,y) x.*cos(y);
A = spfun(@g,A,B);
【问题讨论】:
-
看看documentation,我想你应该改用
spfun(@exp, A-B)。
标签: matlab matrix sparse-matrix