Is there an efficient way to calculate hash for objects
39 ビュー (過去 30 日間)
古いコメントを表示
Hey,
I have objects ("Sequence") on which I need to do some heavy calculations, the result is another object of the same kind (a different, fixed, "Sequence").
These calculations are often repeated, so I want to save the results in a Map, such that they will only be done once (for each Sequence).
The problem: The keys for the map have to be numbers or strings...
Is there any Efficient way to calculate some sort of unique Hash for an object?
If it matters, "Sequence" contains only a single property: a cell array of "Pulse" (another object). "Pulse" has several primitive properties and a struct.
Small clarification, I need the hash to be the same for different handles if internal structs are the same (same as isequal, and not as ==).
For example:
a = Sequence() % Default constructor
b = Sequence() % Default constructor
Hash(a) == Hash(b) % Should be true
Of course, I can calculate some sort of hash myself, but I wonder if there is some other way which might be more efficient...
0 件のコメント
採用された回答
Ameer Hamza
2020 年 4 月 27 日
Have a look at the memorized function: https://www.mathworks.com/help/matlab/ref/memoizedfunction.html. This might be helpful. The submission by Jan, you linked in your question, will also work for objects, not just structs. You may also want to have a look at jsonencode(): https://www.mathworks.com/help/matlab/ref/jsonencode.html
5 件のコメント
Ameer Hamza
2020 年 4 月 28 日
Ah!! The undocumented MATLAB. Glad that you found a solution. If you already have the bitstream then you may avoid Datahash. You can directly use md5 hashing function provided by MATLAB: https://www.mathworks.com/help/releases/R2020a/rptgen/ug/mlreportgen.utils.hash.html, but I guess that requires a separate toolbox. You can select whatever option is more convenient.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Interactive Control and Callbacks についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!