MATLAB에서 sscanf()를 사용하여 문자열에서 값 추출

Ammar Ali 2023년6월20일
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() 기능에 대한 자세한 내용은 이 링크를 확인하십시오.

작가: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

관련 문장 - MATLAB String