Octave Atelier

코드와 해설을 함께 읽는 학습 문서

Code Detail

fmt

Statistics + Control & Dynamics 중심의 Octave 학습 예제

course/basic/fmt.m

목록으로

코드를 복사해 Octave에서 바로 실행할 수 있습니다.

카테고리

Course Basic

course-basic

코드 길이

52

lines

작성자

-

날짜 정보 없음

패키지

none

pkg load

함수 시그니처

function formatted_str = fmt(fmt_str, varargin)

전체 코드

52 lines

function formatted_str = fmt(fmt_str, varargin)
    % fmt 함수는 Python의 f-string과 유사하게 중괄호 {변수명}을 사용하여
    % 문자열 내에서 변수를 치환하는 함수입니다.
    %
    % 입력:
    % fmt_str - 포맷팅할 문자열 (예: 'Name: {name}, Age: {age}')
    % hex (선택) - 색상을 지정하는 16진수 문자열 (예: '#FF5733')
    %
    % 출력:
    % formatted_str - 포맷팅된 결과 문자열
    %
    % 사용 예시:
    %   name = 'Alice';
    %   age = 30;
    %   formatted_str = fmt('Name: {name}, Age: {age}');
    %   disp(formatted_str);
    %
    %   formatted_str = fmt('Hello, {name}!', '#00FF00');
    %   printf(formatted_str);
    
    % 중괄호 안의 변수명을 추출 (정규 표현식 사용)
    tokens = regexp(fmt_str, '\{([^}]+)\}', 'tokens');
    
    % 추출된 변수명에 대해 반복
    for i = 1:length(tokens)
        var_name = tokens{i}{1};  % 변수명 가져오기
        
        % 호출된 환경에서 해당 변수의 값을 가져오기
        try
            var_value = evalin("caller", var_name);
        catch
            error("Undefined variable: %s", var_name);  % 변수명이 정의되지 않으면 오류 발생
        end
        
        % 값이 숫자라면 문자열로 변환
        if isnumeric(var_value)
            var_value = num2str(var_value);
        end
        
        % 원본 문자열에서 `{변수}`를 실제 값으로 치환
        fmt_str = strrep(fmt_str, ['{' var_name '}'], var_value);
    end
    
    % hex 값이 제공되었으면 colored 적용
    if nargin > 1
        hex = varargin{1};
        formatted_str = colored(fmt_str, hex);
    else
        formatted_str = fmt_str;
    end
end

코드 해설

목적

  • Statistics + Control & Dynamics 중심의 Octave 학습 예제

입력

  • 파라미터: fmt_str
  • 파라미터: varargin

출력

  • 반환값: formatted_str
  • 콘솔 텍스트 출력

실행 흐름

  1. 입력
  2. 출력
  3. formatted_str - 포맷팅된 결과 문자열

핵심 함수

  • colored
  • disp
  • error
  • evalin
  • hex
  • isnumeric
  • length
  • num2str

실습 과제

  • 같은 연산을 내장 함수와 사용자 함수 두 방식으로 계산해 오차를 비교해보세요.
  • 질량/감쇠/강성 또는 전달함수 계수를 바꿔 응답 변화를 확인해보세요.
  • 핵심 함수 colored의 인자를 한 가지 바꿔 결과 변화를 기록해보세요.

같은 카테고리 코드

이전 코드 figured 다음 코드 hex2color