A possibly related observation. Below, I get different results depending only on whether S is in full or sparse form:
n = 5;
m = 3;
S = sparse(n, m);
v=nan(n, 1);
D=sparse(diag(v));
result3 = full(D*full(S))
result3 = 5×3
NaN NaN NaN
NaN NaN NaN
NaN NaN NaN
NaN NaN NaN
NaN NaN NaN
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
result4 = full(D*S)
result4 = 5×3
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>