當需交叉比對的資料有2萬多筆你會怎麼做?

資料是X,Y,Z的點座標 共21716組 目的是找出那三組X,Y,Z其所形成的面積最小

且所有的組合都必須要有一組解 比對的次數1.7*10^12 (21716*21715*21714/3!不確定對不對)其實計算量不算大只是比對的次數有點多現在還只是考慮要如何比對比較省時因此還未實做,不過看了過去的文章發現”程式三部曲”“記憶體管理”對效能都能有所提升,想知道各位大大在概念上會如何去思考,先強調這不是學校的作業喔,我曾想過先對點資料前處理測試有沒有什麼相關性如:面積大於某個值就不在往下做,或者是可以把CPU效能發輝到極限的偏方,歡迎大家一起討論 謝謝

Benjamin38412.8112037037

如果要從一大堆資料中,抓出想要的資料,我會想用資料庫。因為資料庫就是位這樣的需求而設計的,資料庫可以允許你設定某個條件,然後它再幫你把符合條件的資料擷取出來。你可以先用LabVIEW計算出數值之後,在存到資料庫,計算完後後,此時資量庫有大量的數據,然後你再下SQL語法,將你要的資料擷取出來。

當然你也可以使用Array,叫LabVIEW從一個1D Array中,找出最大值,但是因為你有大量資料,如果要通通放到Array中,那是會很消耗資源的,所以我不建議放到Array中。

結論就是:建議你可以搭配資料庫來使用。

可以用一個for loop, 加上一個shift register儲存計算到目前為止的最大值, 另一個shift register儲存最大值的(x, y, z). 這樣就不用新的array

請問各位先進們,你們所說的資料庫要如何建立,因為小弟本身有用Formula Node寫程式,如下

我本身寫的程式就像上面一樣,只是我今天只把三筆資料顯示在上面,其實我裡面應該是有三四百筆資料,如果像這樣可以建資料庫嗎?如果要建資料庫還需要安裝其他附屬LABVIEW軟體嗎?是否請各位先進指導小弟。

資料庫是另外一套軟體,跟LabVIEW沒有關係。有許多公司有出資料庫的軟體,如:Access, Microsoft SQL, My SQL, 甲骨文..等等...。

如果有很多筆資料的話,(如幾千筆,幾萬筆),我覺得可以使用資料庫。如果資料量只有幾百筆的話,應該使用LabVIEW就可以解決了。

如果要使用資料庫,可以使用之前我在網站介紹過的LabSQL免費工具來跟資料庫聯結,或是您也可以使用NI出的DataBase Toolkit來跟資料庫聯結。所謂「連結」,就是用這些工具來從LabVIEW對資料庫下查詢的指令,以及接收資料庫回傳的資料。

非常謝謝你的指導,因為我比對只有幾百筆,只是想了解資料庫的使用,現在我大概知道,而我應該就直接用LABVIEW就好了,謝謝你