計算list1中每個元素的位置和list2中相同元素的位置之間的距離,然後在vhdl中找到規範化的距離首先,我們將mem1(由每個數據輸入的地址),即從1,2,3,4 ...到mem1數據輸入結束的地址,ok mem2(由每個數據輸入的地址組成),即來自1,2,3,4的地址.... t0結束mem2數據輸入,ok 檢查是否有任何從mem1輸入的數據=從mem2輸入的任何數據。 也就是說mem1中每個元素的位置以及mem2中相同元素的位置 因此,兩個mem中相同元素的地址不同 地址差異將是距離度量值。 即搜索相似性,計算列表1和列表2之間的距離 如何在vhdl代碼中做到這一點? 請幫忙嗎?如何測量兩個數據之間的距離vhdl
回答
您的方法聽起來合乎邏輯。我會設計一個實例化一塊內存的單個實體。輸入將是您正在查找的數據。輸出將是數據的位置,以及指示數據是否被找到的信號。需要多個時鐘週期才能讀出存儲器中的所有數據。時鐘週期的數量將等於存儲器的深度。因此,如果您的記憶中有10個數據字,則需要10個時鐘來讀取所有字。
你應該考慮的角落案例......如果數據字在內存中兩次會怎樣?數據是否按順序存儲在內存中?
一旦你想出所有這些,在更高級別的文件中實例化這些組件中的兩個。該文件計算兩個數據位置之間的距離。
這就是我將如何解決它的概念。祝你好運。
沒有重複的單詞,table1是一些從用戶A取得的樣本代表他寫的任何文本的三字符,並且在它後面的數字是他輸入這些三字母的時間,例如(acs - 125 ms,asd - 200 ms ........)build一個排序後的表格1(S1),(根據時間排序),表格2(S2)相同的三元組,但在不同的位置比較這些樣本,並找到兩個樣本的相同三元組之間的距離,即Ie在S1中的每個元素,並且在同一元件在s2的位置,d的位置(S1,S2)中,i應該使它在VHDL代碼, – basma
如果我理解正確,您希望生成一個數組,其中包含從array_1中的每個元素到array_2中保存相同值的元素之間的距離的數組。
如果是這樣,這裏是在一個可能的解決方案的第一刺:
function individual_distances(vector_1, vector_2: integer_vector) return integer_vector is
variable distances: integer_vector(vector_1'range);
begin
for i in vector_1'range loop
for j in vector_2'range loop
if (vector_1(i) = vector_2(j)) then
distances(i) := j - i;
end if;
end loop;
end loop;
return distances;
end;
下面是一些隨機排列的樣本輸出:
individual_distances((1, 2, 3, 4, 5), (5, 4, 3, 2, 1)); --> (4, 2, 0, -2, -4)
individual_distances((1, 2, 3, 4), (4, 3, 2, 1)); --> (3, 1, -1, -3)
individual_distances((1, 2, 3), (1, 2, 3)); --> (0, 0, 0)
正如馬丁·湯普森指出,這種解決方案是否可用在你的情況取決於你的性能目標和列表的大小。實際上,這可能適用於中小型列表。如果你的名單很大,你應該研究建築選擇。例如,該算法的完全序列化版本將花費N^2個時鐘週期。下面的例子中需要64個週期來計算與每8個元素兩個陣列之間的距離:
process (clock, reset) is
variable i, j: integer range 0 to 7;
begin
if reset then
i := 0;
j := 0;
distances <= (others => 0);
elsif rising_edge(clock) then
if (vector_1(i) = vector_2(j)) then
distances(i) <= abs(j - i);
end if;
if i < 7 then
i := i + 1;
else
i := 0;
j := (j + 1) mod 8;
end if;
end if;
end process;
其他中間解決方案存在的,如序列化僅外部循環。如果你需要性能,你也可以考慮流水線。
上述代碼是可綜合的,只要記住根據您的設計要求限制範圍。
我做一個代碼爲您的建議瑞克,但我有同樣的問題,什麼是距離的錯誤類型與類型的不兼容 -
library IEEE;
使用IEEE.STD_LOGIC_1164.all;
包樣品是 類型樣品陣列(0到255)的std_logic_vector(0至7);
端樣本;
entity measure is
端口( CLK:STD_LOGIC; A1:在樣品; A2:在樣品; 距離:出樣品); 結束措施; 體系結構行爲的度量是 信號d:樣本;函數距離(A1,A2:樣本)返回樣本爲 可變距離:樣本; (A1(i)= A2(j)) distance:=(j-i); end if; end loop; end loop;
return distances;
end; 結束行爲;
- 1. 測量兩條線之間的距離
- 2. 如何測量兩個CDF之間的「距離」?
- 3. 如何測量Java中兩個單詞之間的距離?
- 4. 如何測量兩個CLLococ之間的距離(單位爲米)?
- 5. 距離之間的兩個
- 6. 測量兩個相對頻率矢量之間的距離
- 7. 矢量之間的測量距離
- 8. 兩點之間的測地距離
- 9. 測量兩個緯度/經度點之間的距離
- 10. 測量視頻中兩個輪廓之間的距離? OpenCV Python
- 11. 測量兩個iOS設備之間的距離
- 12. 通過公路測量兩個位置之間的距離
- 13. 測量兩個Android手機之間的距離
- 14. 峯之間的測量距離
- 15. 測量圖像之間的距離
- 16. HSL顏色之間的距離測量
- 17. 如何矢量化兩個矩陣之間的距離?
- 18. 如何計算Processing中兩個因變量之間的距離?
- 19. 如何有效計算兩個向量之間的距離?
- 20. 如何測量兩個圓之間的距離,然後檢查碰撞?
- 21. 如何獲得距離眩暈兩點之間的距離
- 22. 如何計算兩組數據之間的距離
- 23. 兩個std之間的距離::列表
- 24. 兩個對象之間的距離
- 25. 兩個GEO位置之間的距離
- 26. 兩個座標之間的距離
- 27. 編輯兩個圖之間的距離
- 28. 兩個地址之間的距離
- 29. 兩個詞之間的語義距離
- 30. 兩個地理點之間的距離?
這是否需要合成?如果是這樣,你的績效目標是什麼?名單有多大,需要進行多少次比較?有許多交易會影響任何解決方案的性能和規模。 –
是nedd是可合成的,我們試圖做到這一點,但我想知道它是否正確?首先我們需要有一個ram組件。可以使用下面的推理或實例化它是簡單的雙重(單獨讀取地址/寫入地址) – basma
您仍然需要一些性能目標和有關列表有多大的信息。如果它們很小,那麼可以將它建立在邏輯之外。如果它們很大,則需要使用內部存儲器進行存儲。如果他們是巨大的,你需要外部存儲器和可能是一個聰明的訪問模式/高速緩存,以最大限度地利用外部帶寬 –