我注意到将已经完整的矩阵转换为完整的矩阵很慢:
>> 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)