2012-01-13 37 views
5

Gọi A là một mảng có thứ nguyên tùy ý (2 hoặc 3 trong trường hợp của tôi). Làm thế nào tôi có thể làm phẳng (định hình lại thành 1D) mảng này mà không biết trước số thứ nguyên?Cách làm phẳng (định hình lại thành 1D) một mảng thứ nguyên tùy ý trong Labview

Nếu tôi biết số thứ nguyên, tôi có thể dễ dàng lấy tổng số phần tử (bằng cách sử dụng kết hợp chức năng "Kích thước mảng") và sau đó định lại A đến 1D bằng số này. Thật không may, chức năng "Kích thước mảng" tự trả về một mảng có số phần tử bằng với số lượng thứ nguyên, điều này đưa chúng ta trở lại vấn đề ban đầu.

Tôi đã "giải quyết" vấn đề bằng cách tạo hàm (VI) trả về tổng số phần tử của mảng 3D (loại mảng phổ biến nhất mà tôi mong muốn xử lý), để tôi có thể cung cấp một đối số cho hàm Reshape. Vấn đề: nó sẽ không chấp nhận một mảng 2D, mặc dù thuật toán sẽ làm việc với một mảng như vậy! (có vẻ như trong Labview, các điều khiển mảng rất nghiêm ngặt về số lượng các tham số mà chúng chấp nhận, chẳng hạn như trong trường hợp Matlab). Một giải pháp tốt đẹp sẽ là một cách đơn giản để nhân tất cả các yếu tố của mảng được đưa ra bởi "Kích thước mảng" để nhanh chóng có được tổng số phần tử, mà không cần phải quấn nó trong một tiểu VI. Nhìn chung, không phải là một cách đơn giản và hiệu quả để giải quyết vấn đề này? Nó nên được khá chuẩn ..

Trả lời

11

I belive đây là những gì bạn đang tìm kiếm:

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

Bạn sẽ làm gì:

n-DimInputArray -> arraySize -> 1D_SizesOUT

Điều này trả về mảng 1D có chứa kích thước của tất cả các thứ nguyên mảng.

Sau đó bạn đi:

1D_SizeOUT -> MultiplyArrayElements -> NumberOfElementsIn_n-DimInputArray

Giá trị này đi trong khi kích thước chiều cho ReshapeArray - thực hiện.

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/

Dưới đây là một đoạn mã trên:
enter image description here

+0

Ah, tôi đã bỏ lỡ chức năng "MultiplyArrayElements"! Đây là giải pháp đơn giản mà tôi đang tìm kiếm .. Cảm ơn bạn rất nhiều! –

2

Chỉ cần có được kích thước mảng kích thước mảng và bạn sẽ nhận được số lượng kích thước ...

Để đặt điều này vào một subvi, biến mảng không xác định của bạn thành một biến thể và cung cấp cho biến thể này và số lượng tham số int o subvi. Bên trong subvi, "Variant to Data" với một mảng thứ nguyên của bạn.

+0

Cảm ơn bạn đã biết, tôi không biết phương pháp này .. –