텍스트 파일에서 XY 그래프 그리기
- LabVIEW 랩뷰/Labview 랩뷰 강의
- 2021. 1. 16.
이번 강의에서는 텍스트 파일에서 데이터를 불러와 XY 그래프를 그리는 방법에 대해서 설명하겠습니다. 이제 약간 어플리케이션 영역으로 넘어가는 것 같네요.
1. 사용할 데이터
아래 데이터는 테스트로 쓸 sine 형태의 x배열, y배열이 있는 데이터입니다.
2. 데이터 불러오기
스프레드시트 형태로 되어있는 데이터를 불러오기 위해 사용할 함수는 함수 팔레트의 File I/O - Read Delimited Spreadsheet.vi 입니다. 스프레드 시트로부터 읽기 함수를 블록 다이어그램에 위치시키겠습니다.
스프레드시트로부터 읽기 함수는 읽은 데이터의 출력 형태를 선택할 수 있습니다.
- Double형 숫자
- Integer형 숫자
- 문자열
우리는 사인 함수이므로 데이터에 소수점이 포함되기 때문에 1번 또는 3번으로 선택해야 합니다. 텍스트 파일에 있는 데이터는 문자열 형태로 되어있는 숫자인데, 이것을 자동으로 숫자로 바꿔주니 1번을 사용하면 되겠지요.
스프레드시트에서 읽기 함수의 All rows 출력을 오른쪽 클릭하여 인디케이터를 하나 만듭니다.
이 상태에서 Ctrl+R(또는 실행 버튼)을 눌러서 프로그램을 실행하면, 파일 선택 창이 나오고 여기서 불러올 데이터를 선택할 수 있습니다. sine data.txt 파일을 선택하고 OK버튼을 누르면, all rows 인디케이터에 데이터가 불러와진 것을 알 수 있습니다.
3. 데이터 수정하기
그런데 여기서 조금 이상한 것이 있습니다. 첫 번째 행의 데이터는 왜 0,0일까요? 그것은 스프레드시트로부터 읽기 함수가 텍스트 파일 데이터의 첫 번째 행의 데이터의 문자열 x와 y를 숫자로 바꾸는데 숫자로 변경할 수 없어 기본값인 0을 넣었기 때문입니다. 아래 그림을 보시죠.
첫 번째 행을 삭제해줘야 하므로, 배열로부터 삭제(Delete From Array) 함수를 사용해 보겠습니다. 왼쪽 입력 터미널을 설명하면,
- n-dim array : 삭제할 배열을 입력해 줍니다.
- length(1) : 삭제할 길이를 입력해 줍니다. 괄호 안의 값은 아무것도 연결하지 않았을 때의 기본 값입니다. 따라서 아무것도 입력하지 않으면 길이 1만큼을 삭제합니다. 우리는 1개 행을 삭제할 것이므로 아무것도 입력하지 않아도 됩니다.
- index 0 (last elem) : 삭제를 시작할 인덱스를 입력해 줍니다. 기본값은 마지막 행이며, 우리는 첫 번째 행을 삭제해야 하므로 0을 입력해 줍니다. 2차원 배열의 첫번째 인덱스이므로 행(row)입니다.
- index n-1 : 삭제를 시작할 두 번째 인덱스입니다. 우리는 2차원 배열을 연결했으므로 n-1차원은 열(col)입니다. 우리는 행 전체를 삭제할 것이므로, 이 인덱스는 disabled된 상태(아무것도 연결하지 않음)로 둡니다.
최종적으로 출력된 배열을 보면 0열의 모든 데이터는 x배열이고, 1열의 모든 데이터는 y배열입니다. x배열과 y배열을 분리하기 위하여 배열 인덱스 함수를 사용합니다. 배열 인덱스 함수의 행 터미널(index col)에 0을 입력합니다.
배열 인덱스 함수의 아래쪽에 마우스를 가져다 놓고 아래 그림과 같이 드래그하여 한 칸 증가시킵니다.
배열 인덱스의 출력을 모두 인디케이터로 만들어 봅시다. 이렇게 연결해 두면 첫 번째 출력에서는 0번째 열, 두 번째 출력에서는 1번째 열이 출력됩니다. x배열과 y배열을 따로따로 뺀 것이죠.
4. XY 그래프로 출력하기
이제 마지막으로 XY그래프를 프론트 패널에 추가하고, x배열과 y배열을 클러스터로 순서대로 묶은 뒤 XY그래프에 연결해 줍니다. 실행하면 XY그래프가 그려진 것을 볼 수 있습니다.
아래는 예제로 사용한 코드입니다.
'LabVIEW 랩뷰 > Labview 랩뷰 강의' 카테고리의 다른 글
이벤트 구조란 무엇인가? (2) | 2021.01.18 |
---|---|
케이스 구조란 무엇인가? (0) | 2021.01.17 |
SubVI 란 무엇인가 (0) | 2021.01.15 |
XY 그래프 만들기 기초 (0) | 2021.01.14 |
루프와 함께 배열 다루기 (2) | 2021.01.13 |