2017-09-04 1 views
0

Matlab을 사용하여 실험을 위해 데이터 수집 프로세스를 설정했지만 함수 ain.DAQbufferGet은 하드웨어에서 데이터를 읽는 것입니다. [-200,-160,10,50,-20,40,170,160,-200... etc]과 같은 일련의 데이터 요소를 보유합니다.. NET 배열의 매트릭스 사전 할당

문제 DAQbufferGet의 출력은 출력도

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

50000을 사용하여 생성 될 수 1x1 System.Int16[]

것을 I 저장하려는 예일 수

이다 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[] 데이터 유형 내가 이런 짓을 했을까 방법

와 비슷한 일을하고 있었다?

특히 위에서 설명한 for 루프에 나중에 쓸 수있는 .NET 배열 행렬을 미리 할당합니다.

+1

어떤 환경에서 수집 후 데이터를 사용하고 플롯해야합니까? Matlab에 있다면'.net' 데이터 타입을 오래 유지하는 것이 거의 이점이 없습니다. 나는 DAQbufferGet의 출력을 리셉션에서 직접 변환하여 Matlab의 가장 편리한 데이터 유형 인 _built-in_에 Matlab에 저장합니다. – Hoki

+0

예, Matlab에 포함됩니다. 루프 외부의 다른 데이터 형식으로 변환하는 것이 이상적입니다. 루프는 가능한 한 빨리 데이터를 수집하고 저장해야하며 너무 느리게 변환됩니다. – JCW

+1

이렇게하면 '.net'배열을 사용할 수 없습니다. Matlab에서 지원하는'.net' 배열은 콜론 연산자를 지원하지 않습니다 **. ** 스칼라 ** 인덱싱 만 지원합니다. 즉,이 타입의 할당'data (:, i) = ...'를 사용할 수 없다는 뜻입니다. 당신은 루프, 원소, 고전적인'.net '방식으로 그들을 처리해야합니다 :'k = 1 : n의 경우, data (k, i) = ...; end;'등 ... – Hoki

답변

1

셀의 .NET 배열을 저장하는 단계는 이후 이러한

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

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

데이터 {I}를 그 인덱스를 추출 할 수있는 수단을 또 다른 데이터 형식으로 변환 할 수있는 .NET 배열을 반환하는 것 플롯 된