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