2013-05-02 147 views
1

真的很簡單的問題,我無法繞過這個可視化編程。我有一個大小爲600的數組。我想通過每60個數組索引獲取一個數來將它減小到10的大小。我知道如何用普通的編程語言來做到這一點,但我無法弄清楚LabView。任何人都可以憐憫和幫助我嗎?我已附加到目前爲止的位置,但它很傷心。減少LabView中的陣列「分辨率」

enter image description here

+0

提示:在向其添加數據之前,不需要聲明「數組」。 – 2013-05-03 15:10:36

回答

2

你有什麼是要做到這一點,如果你需要一個固定大小的數組的好方法。如果您正在FPGA上運行或需要減少RT終端上的抖動,這將非常重要。

你有什麼是不是最簡單的方法來做到這一點。任何簡單的方法是用移位寄存器來積累新的陣列,像這樣:

enter image description here

正如你可以見式如果指數是60的倍數,則元素添加到陣列中。否則,在假的情況下,數組通過未修改的方式傳遞。

您應該知道,雖然此方法使用起來更加容易,但它偶爾會導致內存分配以增加正在累積的數組大小。通常這不是問題。

9

由於尺寸是已知的,它更有效地做這樣的事情:

enter image description here

您還可以配置輸出隧道是有條件的,這使得代碼更簡單,但效率不高,因爲它必須重複分配內存。這是不是一個真正的考慮當你有10個元素的數組,但它可能是與更大的陣列:

enter image description here

如果您遇到這樣的麻煩,你不妨去通過一些教程,書籍甚至課程。

+0

它當然不會重新分配每個電話。它將在spurts分配。我喜歡你的索引數組解決方案更好 - 當你只需要n/60時n次運行循環無意義。 – Sobachatina 2013-05-03 01:28:28

+0

不完全。在2012年,它的行爲就像您的代碼,我相信每次調用都會分配代碼。我相信在2013年,它應該表現得更像是一個while循環的自動索引,它按指數規律分配。無論如何,這是一個實現細節。我也不會說這樣做沒有意義 - 有些人可能會發現代碼更簡單,在特定情況下選擇更高效的代碼可能是可以接受的。 – Yair 2013-05-03 07:20:18

0

冷卻的另一種方法是使用原始的decimate 1-d array原型。

將數組拆分成n固定長度數組,其中第一個數組包含0 n 2n 3n ...雖然它對於n = 60可能有點大。

如果您需要在不同位置開始的相同長度的多個數組,那麼這可能會更有用。

0

根據你所描述的,你可能想要做一些類似於每60個值的平均值,而不是隻是任意地抓住每個60值,這樣,如果你碰巧抓住一個異常值,你不會顯示很多抖動。 。根據您的應用程序這可能會或可能沒有意義:

enter image description here

enter image description here

0

而且考慮檢查出開源OpenG toolkit。它有一個稱爲「索引1D數組元素」的索引函數,您只需將數組和索引位置賦予所需數據,然後返回所需的簡化數組。請注意,如果您開始處理超大型數組,它的函數可能太慢和/或佔用大量內存,但它也包含很多很棒的函數,而不僅僅是數組操作。

3

的另一種方法(不循環):

enter image description here

我陣列重塑成二維數組(這不會分配一個新的數組,只有尺寸將被改變),則索引從第一coloumn獲得每60個元素。