我注意到将已经完整的矩阵转换为完整矩阵很慢:
>> tic; for k = 1:100; x = uint16(ones(10000,100)); end; toc
Elapsed time is 0.035748 seconds.
>> tic; for k = 1:100; x = uint16(uint16(ones(10000,100))); end; toc
Elapsed time is 0.034180 seconds.
>> tic; for k = 1:100; x = full(uint16(ones(10000,100))); end; toc
Elapsed time is 0.460977 seconds. %%%%% SLOW!
我在没有uint16的情况下进行了测试:
>> tic; for k = 1:100; x = ones(10000,100); end; toc
Elapsed time is 0.060028 seconds.
>> tic; for k = 1:100; x = full(ones(10000,100)); end; toc
Elapsed time is 0.229058 seconds. %%%%% SLOW!
同样的效果.
为什么是这样? full应该只将稀疏矩阵转换为完整矩阵.如果它已经满了,它不应该什么都不做?
编辑:issparse是超快的!我想作为一个MEX,它主要是内存成本?
Mac OS X上的MATLAB版本7.13.0.564(R2011b)