카테고리
Exercise 01exercise-01
코드와 해설을 함께 읽는 학습 문서
Code Detail
Control & Dynamics + Visualization 중심의 Octave 학습 예제
ex-01/main-01-05.m
코드를 복사해 Octave에서 바로 실행할 수 있습니다.
function out = my_diff(in)
56 lines
# - 입력 데이터 준비
# - 데이터 범위 산정
# - 데이터 출력
# - 연산
# - 시각화
# - 함수 사용
# - 형식있는 출력
# - 자동 레전드
# - figure parameter
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);
printf("tt min: %6.2f, max: %6.2f\n", min(tt), max(tt));
printf("pp_val min: %6.2f, max: %6.2f\n", min(pp_val), max(pp_val));
printf("dp_val min: %6.2f, max: %6.2f\n", min(dp_val), max(dp_val));
dp_v_0 = diff(pp_val) / dt;
dp_v_1 = my_diff(pp_val) / dt;
figure("position", [320, 180, 1280, 720], "color", "w", "Name", "Polinomial", "NumberTitle", "off");
hold on
grid on
plot(tt, pp_val, ";pp;");
plot(tt, dp_val, ";dp;");
plot(t_, dp_v_0, ";dp_v_0;");
plot(t_, dp_v_1, ";dp_v_1;"); ex-01/main-01-01.m
ex-01/main-01-02.m
ex-01/main-01-03.m
ex-01/main-01-04.m
ex-01/main-01-06.m
ex-01/main-01-07.m
ex-01/main-01-08.m
ex-01/main-01-09.m