시간 변환 함수의 필요성
데이터 처리 과정에서 시간 형식 변환은 빈번히 발생하는 작업입니다. GPS 데이터에서 "12:05:30" 형식의 시간 문자열을 처리하거나, 오디오 분석에서 54330초 형식의 지속시간을 계산할 때, 시-분-초와 초 단위 간 변환이 필요합니다. 간단한 산술 연산으로 구현 가능하지만, 프로젝트 전반에 걸쳐 중복 코드가 산재하면 오류 발생 확률이 높아집니다. 특히 음수 시간 처리나 소수점 연산에서 미묘한 오류가 발생할 수 있어, 재사용 가능한 강력한 함수 구현이 필수적입니다.
시간(HMS)을 초로 변환하는 함수 설계
시간(Hour), 분(Minute), 초(Second)를 총 초로 변환하는 함수의 핵심 로직은 다음과 같습니다:
total_seconds = hours * 3600 + minutes * 60 + seconds;
이 기본 구현을 산업 환경에서 사용 가능한 수준으로 개선한 함수는 다음과 같습니다:
function totalSec = convertHMS(hours, mins, secs)
% CONVERTHMS 시간(HMS)을 총 초로 변환
% totalSec = CONVERTHMS(hours, mins, secs)는 주어진 시간, 분, 초를
% 총 초 단위로 변환합니다.
%
% 입력 매개변수:
% hours - 시간 값 (스칼라, 벡터, 행렬). 소수 허용
% mins - 분 값. hours와 동일한 차원
% secs - 초 값. hours와 동일한 차원
% 출력:
% totalSec - 계산된 총 초. 입력과 동일한 차원
%
% 예시:
% t1 = convertHMS(1, 30, 15); % 5415 반환
% t2 = convertHMS([1,2], [0,30], [0,0]); % [3600, 9000] 반환
%
% 주의: 60초 이상의 입력은 자동 변환되지 않음
% 예: convertHMS(0, 90, 0) = 5400
% 입력 개수 검증
if nargin ~= 3
error('3개의 입력 매개변수가 필요합니다');
end
% 숫자형 입력 검증
if ~isnumeric(hours) || ~isnumeric(mins) || ~isnumeric(secs)
error('모든 입력은 숫자형이어야 합니다');
end
% 차원 일치 검증
if ~isequal(size(hours), size(mins)) || ~isequal(size(hours), size(secs))
error('입력 배열의 차원이 일치해야 합니다');
end
% 변환 연산
totalSec = hours * 3600 + mins * 60 + secs;
end
이 함수는 세 가지 핵심 검증 로직을 포함합니다: 1. 입력 매개변수 개수 확인 2. 숫자형 데이터 타입 검증 3. 입력 배열 차원 일치 확인 기본 연산 외에 이러한 검증 단계를 추가함으로써 다양한 실수 상황을 사전에 방지할 수 있습니다.