我在Matlab中有一張表,其中一些列代表128位散列。用於matlab中比較哈希的最快類型
我想根據這些散列將行匹配到一行或多行。
目前,哈希表示爲十六進制字符串,並與strcmp()
進行比較。但是,處理表格需要很多秒。
在matlab中比較兩個散列的最快方法是什麼?
我試過把它們變成分類變量,但是這太慢了。據我所知,Matlab沒有128位數字類型。 標稱值和序號類型已棄用。
有沒有其他人可以工作?
下面的代碼類似於我在做什麼:
nodetype = { 'type1'; 'type2'; 'type1'; 'type2' };
hash = {'d285e87940fb9383ec5e983041f8d7a6'; 'd285e87940fb9383ec5e983041f8d7a6'; 'ec9add3cf0f67f443d5820708adc0485'; '5dbdfa232b5b61c8b1e8c698a64e1cc9' };
entries = table(categorical(nodetype),hash,'VariableNames',{'type','hash'});
%nodes to match. filter by type or some other way so rows don't match to
%themselves.
A = entries(entries.type=='type1',:);
B = entries(entries.type=='type2',:);
%pick a node/row with a hash to find all counterparts of
row_to_match_in_A = A(1,:);
matching_rows_in_B = B(strcmp(B.hash,row_to_match_in_A.hash),:);
% do stuff with matching rows...
disp(matching_rows_in_B);
散列字符串是我在用的忠實表示,但他們不一定讀或原始出處字符串存儲。它們只是爲了這個目的而轉換,因爲它是進行比較的最快方式。
A [mcve]可能有幫助 –
我認爲這個問題很明顯。無論如何,我沒有太多的評論這個問題 - 最多可以嘗試兩次64位雙打?有人在這件事上有更好的背景可以幫助我想。 – crazyGamer
這不是一種自我解釋......這是一個以MATLAB爲中心的問題,但可能有99%的MATLAB回答者不知道「哈希」是什麼樣的!你說你有一張桌子,你能澄清一下,這實際上是'table'數據類型還是矩陣的另一個詞(行話問題在這裏很常見)。你說你正在使用'strcmp',向我們展示2個哈希值,你如何比較它們(甚至只是那3行代碼!),所以我們有一個你想達到的具體例子。當你剛纔提到的比較字符串時,你會談論數字類型,那麼你的哈希值又是什麼? – Wolfie