LabVIEW: как скопировать из одного массива в другой? - PullRequest
0 голосов
/ 26 апреля 2018

Я хотел бы глубоко скопировать один массив в другой массив. Каков наилучший способ сделать это?

Я пытался таким образом, и это похоже на работу. Я хотел бы глубоко скопировать его.

enter image description here

Спасибо

1 Ответ

0 голосов
/ 10 мая 2018

Возможно, вы привыкли к другому языку, где все делается по ссылке, но вам не нужно делать ничего этого в LabVIEW. LabVIEW автоматически копирует данные напровод, когда это необходимо, но не тогда, когда это не нужно.

Единственное, что делает ваш код, это создает массив с дополнительным измерением, потому что внутри вашего цикла вы строите каждое скалярное значение в одномерный массив с одним элементом, а затем передаете этот массив в терминал индексного массива , который строит массив данных, подключенных к нему - поскольку вы передаете одномерный массив, вы получаете двумерный массив.Однако вы могли бы получить точно такой же результат, если вы действительно этого хотели, подключив исходный массив к функции Build Array, а затем изменив ее с 1 x n на n x1 с использованием Reshape Array:

VI snippet showing array reshape

Если вы беспокоитесь о выделении памяти, что не должно быть, если только ваш кодфактически не хватает памяти или слишком медленно , вы можете увидеть, где LabVIEW будет и не будет делать копию, выбрав Tools > Profile > Show Buffer Allocations.Это добавляет маленькую черную точку к любому терминалу одного из выбранных вами типов данных, где должен был быть выделен новый буфер памяти.Если вы сделаете это для приведенного выше кода, вы увидите, что для построения массива из данных более низкого размера требуется новый буфер, но для изменения формы массива это не нужно.

Если у вас есть особый случай, когда вам нужночтобы заставить LabVIEW не выделять буфер, вы можете использовать In Place Element Structure.Но для подавляющего большинства программирования вам не нужно думать ни о чем из этого: просто позвольте LabVIEW позаботиться об этом за вас.

Тем временем я предлагаю вам прочитать учебник по циклам .

...