figured
Statistics + Visualization 중심의 Octave 학습 예제
course/basic/figured.m
함수 시그니처
function fig = figured(varargin) 전체 코드
전체 코드를 복사해서 Octave에서 바로 실행할 수 있습니다.
function fig = figured(varargin)
% figured - 중앙 정렬 및 크기 설정이 가능한 figure 생성 함수
%
% 지원:
% - Octave
%
% 입력:
% varargin - 다양한 figure 속성을 설정하는 옵션 목록:
% 'Position' - [left bottom width height] 형식의 위치 및 크기 (기본값: 자동 중앙 정렬)
% 'Size' - [width height] 형식의 창 크기 (기본값: 화면 크기의 1/3)
% 'Move' - 상대적 위치 이동값 [dx dy] (기본값: [0 0])
% 'Name' - 창 제목 (기본값: 'Figure')
% 'Color' - 배경색 [R G B] 형식 (기본값: [1 1 1])
% 'NumberTitle' - 창의 번호 표시 여부 (true 또는 false, 기본값: false)
%
% 출력:
% fig - 생성된 figure의 핸들
%
% 설명:
% - figure 창을 화면 중앙에 배치
% - 창 크기 및 위치를 설정 가능
% - 배경색 및 창 제목 설정 지원
% - figure 핸들을 반환
%
% 사용 예시:
% fig = figured(); % 기본 설정으로 figure 생성
% fig = figured('Size', [800, 600]); % 크기를 800x600으로 설정
% fig = figured('Move', [200, 100]); % 중앙에서 200px 우측, 100px 위로 이동
% fig = figured('NumberTitle', false); % 숫자 제목 숨김
% varargin에서 첫 번째 인자가 셀 배열인 경우 처리
if length(varargin) == 1 && iscell(varargin{1})
varargin = varargin{1};
end
% 창 크기 및 위치를 설정
screenSize = get(0, 'ScreenSize'); % [x y width height]
screenWidth = screenSize(3);
screenHeight = screenSize(4);
sizeIdx = find(strcmp(varargin, "Size"));
moveIdx = find(strcmp(varargin, "Move"));
if ~isempty(sizeIdx) && sizeIdx < length(varargin)
sizeVal = varargin{sizeIdx + 1};
windowWidth = sizeVal(1);
windowHeight = sizeVal(2);
else
windowWidth = floor(screenWidth / 3);
windowHeight = floor(screenHeight / 3);
end
if ~isempty(moveIdx) && moveIdx < length(varargin)
moveVal = varargin{moveIdx + 1};
moveX = moveVal(1);
moveY = moveVal(2);
else
moveX = 0;
moveY = 0;
end
% 화면 중앙 정렬 및 이동 적용
left = (screenWidth - windowWidth) / 2 + moveX;
bottom = (screenHeight - windowHeight) / 2 + moveY;
% 최종 position 값 설정
position = [left, bottom, windowWidth, windowHeight];
% 'Size' 및 'Move' 옵션 제거
varargin([sizeIdx, sizeIdx + 1, moveIdx, moveIdx + 1]) = [];
% 기본 figure 파라미터
param_f = {
"Position", position, "Name", "Figure", ...
"NumberTitle", false, "Color", [1 1 1], ...
};
% 사용자 지정 인자와 병합
param_f = merge_params(param_f, varargin);
% figure 생성 및 속성 적용
fig = figure(param_f{:});
end 코드 해설
목적
Statistics + Visualization 중심의 Octave 학습 예제
입력
- 파라미터: varargin
출력
- 반환값: fig
- 그래프/figure 출력
실행 흐름
- 입력
- 출력
핵심 함수/주제
lengthfindfloorisemptymoveValscreenSizesizeValstrcmp
실습 과제
- 같은 연산을 내장 함수와 사용자 함수 두 방식으로 계산해 오차를 비교해보세요.
- 축 범위와 라벨을 바꿔 그래프 해석성이 어떻게 달라지는지 확인해보세요.
- 핵심 함수 length의 인자를 한 가지 바꿔 결과 변화를 기록해보세요.
학습 팁
- 그래프 비교 시 축 범위(XLim/YLim)와 단위를 먼저 고정하면 해석 오류를 줄일 수 있습니다.
같은 카테고리의 다른 코드
- colored
course/basic/colored.m - demo-00
course/basic/demo-00.m - demo-01
course/basic/demo-01.m - demo-02
course/basic/demo-02.m - demo-03a
course/basic/demo-03a.m - demo-03b
course/basic/demo-03b.m - demo-04
course/basic/demo-04.m - demo-05
course/basic/demo-05.m - demo-06
course/basic/demo-06.m - demo-07
course/basic/demo-07.m