擅长:python、mysql、java
<p>显然,Matlab对于稀疏数组和密集数组有不同的实现。使用链接到的54882个非零项的4425x7126稀疏矩阵A和以下命令:</p>
<pre><code>FA=full(A);
av=A(:);
fav=FA(:);
</code></pre>
<p>我希望以下命令都产生相同的值,因为它们都在计算A的(非零)元素平方和的平方根:</p>
^{pr2}$
<p>事实上,我们看到了三个稍有不同的答案:</p>
<pre><code> norm(A,'fro') 0.0223294051001499
norm(av,2) 0.0223294051001499
norm(FA,'fro') 0.0223294051001499
norm(fav,2) 0.0223294051001499
sqrt( sum(av .* av) ) 0.0223294051001521
sqrt( sum(av .^ 2) ) 0.0223294051001521
sqrt( sum(fav .* fav) ) 0.0223294051001506
sqrt( sum(fav .^ 2) ) 0.0223294051001506
</code></pre>
<p>事实上,即使是A的稀疏表示和稠密表示的元素之和也是(有点)不同的:</p>
<pre><code>sum(A(:)) 1.00000000000068
sum(FA(:)) 1.00000000000035
</code></pre>
<p>这些差异似乎与您在Python和Matlab规范之间看到的相同数量级的差异。在</p>