0
我正在使用Matlab来设置实验的数据采集过程,函数ain.DAQbufferGet
是从我们的硬件中读取数据的函数。它包含一系列数据点,如[-200,-160,10,50,-20,40,170,160,-200... etc]
。预分配.NET阵列的矩阵
的问题是,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循环中写入。
您将在哪个环境中使用并在采集后绘制数据?如果它在Matlab中,那么长时间保持'.net'数据类型几乎没有什么优势。我将在接收时直接转换DAQbufferGet的输出,并将其以Matlab中最便利的数据类型_built-in_的形式存储在Matlab中。 – Hoki
是的,它将在Matlab中。 理想情况下,我会转换为循环之外的另一种数据类型。 循环只需要尽可能快地获取和存储数据,转换只会让它太慢 – JCW
您不能以这种方式使用'.net'数组。 Matlab支持的'.net'数组**不支持冒号操作符。它们只支持**标量**索引。这意味着你不能使用这种类型的赋值'data(:,i)= ...'。你必须按照元素,循环,经典的'.net'方式处理它们:'for k = 1:n; data(k,i)= ...; end;'等等...... – Hoki