main-01-02
Visualization 중심의 Octave 학습 예제
ex-01/main-01-02.m
함수 시그니처
function out = my_diff(in) 전체 코드
전체 코드를 복사해서 Octave에서 바로 실행할 수 있습니다.
# - 입력 데이터 준비
# - 데이터 범위 산정
# - 데이터 출력
# - 연산
# - 시각화
# - 함수 사용
clc; clear all; close all;
function out = my_diff(in)
# in: 대상 다항식
# out: 다항식의 변화량
out = in(2:end) - in(1:end-1);
end
function [tt, dt] = timeaxis(tspan, nn)
# tspan: 시간 구간
# nn: 시간 간격
# tt: 시간 배열 (end point is not included)
if nargin < 1; tspan = [0, 1]; end
if nargin < 2; nn = 100; end
T1 = tspan(1);
T2 = tspan(2);
if T1 > T2; error("T1 > T2"); end
dt = (T2 - T1) / nn;
tt = (0:nn-1) * dt + T1;
end
pp = poly([1, 2, 3]);
dp = polyder(pp);
tspan = [0.8, 3.2];
nn = 10000;
[tt, dt] = timeaxis(tspan, nn);
t_ = tt(2:end);
pp_val = polyval(pp, tt);
dp_val = polyval(dp, tt);
disp([min(tt) max(tt)]);
disp([min(pp_val) max(pp_val)]);
disp([min(dp_val) max(dp_val)]);
dp_v_0 = diff(pp_val) / dt;
dp_v_1 = my_diff(pp_val) / dt;
figure
hold on
grid on
plot(tt, pp_val);
plot(tt, dp_val);
plot(t_, dp_v_0);
plot(t_, dp_v_1);
legend("pp", "dp", "dp_v_0", "dp_v_1"); 코드 해설
목적
Visualization 중심의 Octave 학습 예제
입력
- 파라미터: in
출력
- 반환값: out
- 그래프/figure 출력
- 콘솔 텍스트 출력
실행 흐름
- - 입력 데이터 준비
- - 데이터 범위 산정
- - 데이터 출력
- - 연산
- - 시각화
핵심 함수/주제
plotdispmaxmininpolyvaltimeaxistspan
실습 과제
- 축 범위와 라벨을 바꿔 그래프 해석성이 어떻게 달라지는지 확인해보세요.
- 핵심 함수 plot의 인자를 한 가지 바꿔 결과 변화를 기록해보세요.
- "- 입력 데이터 준비 -> - 데이터 범위 산정" 흐름을 함수 단위로 분리해 리팩터링해보세요.
학습 팁
- 그래프 비교 시 축 범위(XLim/YLim)와 단위를 먼저 고정하면 해석 오류를 줄일 수 있습니다.
같은 카테고리의 다른 코드
- main-01-01
ex-01/main-01-01.m - main-01-03
ex-01/main-01-03.m - main-01-04
ex-01/main-01-04.m - main-01-05
ex-01/main-01-05.m - main-01-06
ex-01/main-01-06.m - main-01-07
ex-01/main-01-07.m - main-01-08
ex-01/main-01-08.m - main-01-09
ex-01/main-01-09.m - main-01-10
ex-01/main-01-10.m - main-01
ex-01/main-01.m