我正在使用DataHash(https://de.mathworks.com/matlabcentral/fileexchange/31272-datahash)来计算1500行和700000列矩阵的sha1哈希值。
此操作大约需要16秒,这会在缓存结果时产生相当大量的算法。我使用散列来保存长时间运行操作的结果,该操作将矩阵作为输入。
任何人都知道如何计算更快的哈希值?通过一些快速操作来减少矩阵也是可以的。散列矢量会更快,但由于矩阵相当庞大,我不知道如何将一个较小的替换作为散列输入。
答案 0 :(得分:3)
我认为使用底层Java框架,您可以通过良好的性能改进实现相同的结果:
% Your 1500-by-700000 matrix...
A = [ ... ];
% Convert A into a byte array called B...
B = typecast(A(:),'uint8');
% Or, as suggested, using the undocumented function getByteStreamFromArray:
% B = getByteStreamFromArray(A);
% Create an instance of a Java MessageDigest with the desired algorithm:
md = java.security.MessageDigest.getInstance('SHA-1');
md.update(B);
% Properly format the computed hash as an hexadecimal string:
hash = reshape(dec2hex(typecast(md.digest(),'uint8'))',1,[]);