Предварительное выделение матрицы массивов.NET

Я использую Matlab для настройки процесса сбора данных для эксперимента, функция ain.DAQbufferGet это то, что читает данные с нашего оборудования. Он содержит ряд точек данных, таких как [-200,-160,10,50,-20,40,170,160,-200... etc],

Проблема в том, что вывод DAQbufferGet является 1x1 System.Int16[]

Такой вывод также может быть создан с помощью

`NET.createArray('System.Int16', 50000)` 

Вот 50000 это просто пример номер

Я хочу сохранить вывод DAQbufferGet в матрице без необходимости преобразовывать его в другой тип данных и иметь возможность отобразить его позже (вне цикла), как показано здесь:

data = int16(zeros(10, 50000));

for k = 1:10
    data(k,:) = int16(zeros(1,50000));
end

for i = 1:10
    data(i,:) = int16(ain.DAQbufferGet());
end

Мне было трудно сделать что-то подобное с 1x1 System.Int16[] тип данных

Как бы я это сделал?

В частности, предварительно выделите матрицу массивов.NET, которые впоследствии можно будет записать в цикле for, описанном выше.

1 ответ

Решение

Похоже, что хранение массива.NET в ячейке означает, что вы можете позже извлечь его и проиндексировать как таковой

for k = 1:10
data{k} = NET.createArray('System.Int16', 50000);
end

for i = 1:10
data{i} = ain.DAQbufferGet();
end

data{i} возвращает массив.NET, который можно преобразовать в другой тип данных и вывести на график

Другие вопросы по тегам