2014-01-16 1 views
1

이것은 호기심을 만족시키기 위해 무언가를하는 방법에 관한 질문이 아닙니다.labview는 배열 크기 정보와 배열 데이터를 어떻게 구분합니까?

this에 따르면 Labview는 메모리에 배열을 각 차원의 크기와 실제 데이터가 뒤 따르는 일련의 int32로 저장합니다. 예를 들어, 크기가 3x5 인 2 차원 배열은 다음과 같이 저장됩니다.

0: 3 
4: 5 
8: data starts here 

이제 int32 배열이 있다고 가정합니다. labview에서 실제 데이터와 배열 크기 정보의 차이점을 어떻게 알 수 있습니까? 예를 들어, 위의 예제에서 labview는 3x5 배열이고 길이가 3 인 1 차원 배열이 아니라는 것을 어떻게 알 수 있습니까? 그런 다음 나머지 요소는 무시합니까? 죄송합니다. 내가 빠진 것이 분명합니다.

답변

1

데이터 참조가 LabVIEW에서 내부적으로 전달 될 때 데이터 유형은 항상 전달됩니다. 데이터는 void 포인터로 전달되고 형식은 함께 전달됩니다. 따라서 LabVIEW가 배열을 볼 때마다 유형이 int32의 2 차원 배열임을 알 수 있습니다. (내쇼날 인스트루먼트의 LabVIEW 팀에서 작업 중임)

1

LabVIEW KB 기사 How LabVIEW stores data in memory을 보면 모든 데이터 유형이 유형 정보와 함께 저장된다는 것을 알 수 있습니다. 배열의 경우 먼저 각 차원에 대해 I32를 저장 한 다음 플랫 텐드 데이터를 저장합니다. 실제 데이터 형식은 type-descriptor에 저장되며, 포함 된 형식 설명자의 목록으로 구성됩니다. 배열의 최소 두 가지이다 :

  1. 어레이 배열
  2. 데이터

배열의 형식 디스크립터가

<nn> xx40 <k> <k dims> <k elems> <element type descriptor>

NN 총 데이터 패킷 크기는
0123입니다.

가 xx03의 XX

0004

0004 종류의 길이 : 516,xx40 배열 데이터 유형
K가 포함 I32 형식 디스크립터에 대한 전체 측정의 수

임 설명자 03은 I32 타입 식별자입니다

그러나 LabVIEW 7과 8 사이에서 변경되었습니다. descr 유형에 의존합니다. iptor는 당신이 혼란해서는 안되는 어떤 것입니다. LabVIEW가이를 처리하도록하십시오.