簡體   English   中英

如何在Labview中展平(重塑為1D)任意維數組

[英]How to flatten (reshape to 1D) an array of arbitrary dimension in Labview

設A是任意維數的數組(在我的例子中為2或3)。 如何在不事先知道尺寸數量的情況下展平(重塑為1D)此陣列?

如果我知道尺寸的數量,我可以很容易地獲得元素的總數(通過使用“數組大小”功能的組合),然后使用此數字重新形成A到1D。 不幸的是,“數組大小”函數本身返回一個數組元素數等於維數的數組,這使我們回到最初的問題。

我已經通過創建一個函數(VI)“解決”了這個問題,該函數返回了3D數組的元素總數(我期望處理的最常見的數組類型),所以我可以將它作為參數給出重塑功能。 問題:它不會接受2D數組,即使算法適用於這樣的數組! (似乎在Labview中,數組控件對它們接受的維數是嚴格的,例如在Matlab中不是這種情況)。

一個很好的解決方案是將“數組大小”給出的數組的所有元素相乘以快速獲得元素總數的簡單方法,而不必將其包裝在子VI中。 總的來說,是不是有一種簡單有效的方法來解決這個問題? 應該很標准..

我相信這就是你要找的東西:

http://zone.ni.com/reference/en-XX/help/371361E-01/glang/reshape_array/

你會這樣做:

n-DimInputArray - > ArraySize - > 1D_SizesOUT

這將返回包含所有數組維度大小的1D數組。

然后你去:

1D_SizeOUT - > MultiplyArrayElements - > NumberOfElementsIn_n-DimInputArray

此值作為ReshapeArray的尺寸大小 - 完成。

http://zone.ni.com/reference/en-XX/help/371361E-01/glang/array_size/

http://zone.ni.com/reference/en-XX/help/371361E-01/glang/multiply_array_elements/

以下是上述代碼的片段:
在此輸入圖像描述

只需獲取數組大小的數組大小,您就可以獲得維數...

要將其放入子目錄中,請將未知數組轉換為變量,並將此變量和維數提供給子目錄。 在subvi中,“Variant to Data”包含您的維度數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM