我想通过忽略零元素在矩阵上运行快速的 Matlab 算法。
过去我只使用了一个非常慢的双循环,例如
for i = 1 : size(x,1)
for j = 1 : size(x,2)
if x(i,j) ~= 0
... do something with x(i,j)
end
end
end
但是我怎样才能对整个矩阵 x 进行矩阵运算呢?例如,我该如何运行
x(i,j) = log(x(i,j)) if x>0 else 0 <-- pseudo code
在没有for循环的整个矩阵上的Matlab?
最后我想重写像
result = sum(sum((V.*log(V./(W*H))) - V + W*H));
忽略零。
我只需要理解这个概念。如果需要,我也可以使用 NaN 而不是零,但我没有找到例如函数
nanlog()