MATLAB에서 sscanf()를 사용하여 문자열에서 값 추출
이 자습서에서는 MATLAB의 sscanf()
함수를 사용하여 주어진 형식에 따라 문자열을 스캔하는 방법에 대해 설명합니다.
MATLAB에서 sscanf()
함수를 사용하여 문자열에서 값 추출
sscanf()
함수는 MATLAB에서 지정된 형식에 따라 문자열을 스캔합니다. 예를 들어 주어진 문자열에 숫자가 포함되어 있고 서로 분리하여 행렬에 저장하려는 경우 sscanf()
함수를 사용할 수 있습니다.
sscanf()
함수의 첫 번째 인수는 입력 문자열이고 두 번째 인수는 숫자 값에 대해 %d
와 같은 문자열을 스캔하는 데 사용하려는 형식입니다. 세 번째 인수는 선택 사항이며 문자열 스캔 크기를 정의하며 전체 문자열을 스캔하지 않으려는 경우에 유용합니다.
크기를 지정하지 않으면 함수가 전체 문자열을 스캔합니다. sscanf()
함수는 네 개의 인수를 반환합니다.
첫 번째 출력 인수는 문자열 스캔 결과를 포함하는 행렬입니다. 두 번째 출력 인수는 선택 사항이며 함수가 성공적으로 스캔한 요소 수를 반환합니다.
세 번째 선택적 출력 인수는 문자열을 스캔하는 동안 발생한 오류 메시지를 반환합니다. 네 번째 인수도 선택 사항이며 sscanf()
가 스캔 프로세스를 중지한 위치의 다음 인덱스를 반환합니다.
예를 들어, 여러 부동 소수점 숫자를 포함하는 문자열을 만들고 MATLAB의 sscanf()
함수를 사용하여 구분해 보겠습니다.
암호:
clc
clear
My_S = "3.1 2.2 5.2";
num = sscanf(My_S,'%f')
출력:
num =
3.1000
2.2000
5.2000
위의 코드에서 clc
명령은 MATLAB 명령 창을 지우는 데 사용되고 clear
명령은 작업 공간을 지우는 데 사용됩니다. 출력에서 볼 수 있듯이 모든 부동 소수점 숫자가 분리되어 행렬 내부에 저장되었습니다.
이제 문자와 숫자를 포함하는 다른 문자열을 정의하고 숫자를 구분해 보겠습니다.
암호:
clc
clear
My_S = "3.1 2.2 hello 5.2";
[num, count, msg, index] = sscanf(My_S,'%f')
출력:
num =
3.1000
2.2000
count =
2
msg =
'Matching failure in format.'
index =
9
위의 코드는 sscanf()
함수의 모든 출력을 저장하기 위해 4개의 출력 인수를 정의했습니다. 위의 결과에서 num
변수에는 두 개의 요소만 포함되어 있지만 보시다시피 주어진 문자열에는 네 개의 숫자가 있습니다.
이유는 msg
변수에 반환되며 지정된 형식에 일치하는 오류가 있음을 나타냅니다. 위의 코드에서 %f
기호를 사용하여 부동 소수점 숫자를 스캔하도록 설정했습니다. 따라서 함수가 부동 소수점 숫자가 아닌 문자 h
로 이동하면 거기서 멈춥니다.
인덱스와 함께 오류 메시지를 반환했고, 출력에서 9
인 문자열 스캔을 중지했습니다.
sscanf()
함수 내부의 세 번째 입력 인수로 크기를 정의할 수도 있습니다. 크기는 위 출력의 개수와 관련이 있습니다. 크기를 1
로 정의하면 함수는 문자열의 첫 번째 요소만 읽습니다.
행렬의 경우 문자열을 m*n
으로 정의할 수도 있습니다. 주어진 행렬의 특정 행이나 열만 읽으려는 경우에 유용합니다.
부호 있는 정수 또는 10진수에 대한 %d
, 무부호 정수 또는 10진수에 대한 %u
, 8진수 또는 8진수에 대한 %o
, %x
는 16진수 또는 밑수 16 숫자의 경우 %f
는 부동 소수점 숫자의 경우입니다.
sscanf()
기능에 대한 자세한 내용은 이 링크를 확인하십시오.