main-01-02

Visualization 중심의 Octave 학습 예제

ex-01/main-01-02.m

코드 인덱스로 돌아가기

카테고리

Exercise 01

학습 소스 그룹

코드 길이

54

lines

작성자

-

날짜 정보 없음

패키지

none

pkg load 기준

함수 시그니처

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 출력
  • 콘솔 텍스트 출력

실행 흐름

  1. - 입력 데이터 준비
  2. - 데이터 범위 산정
  3. - 데이터 출력
  4. - 연산
  5. - 시각화

핵심 함수/주제

plotdispmaxmininpolyvaltimeaxistspan

실습 과제

  • 축 범위와 라벨을 바꿔 그래프 해석성이 어떻게 달라지는지 확인해보세요.
  • 핵심 함수 plot의 인자를 한 가지 바꿔 결과 변화를 기록해보세요.
  • "- 입력 데이터 준비 -> - 데이터 범위 산정" 흐름을 함수 단위로 분리해 리팩터링해보세요.

학습 팁

  • 그래프 비교 시 축 범위(XLim/YLim)와 단위를 먼저 고정하면 해석 오류를 줄일 수 있습니다.

같은 카테고리의 다른 코드