Octave Atelier

코드와 해설을 함께 읽는 학습 문서

Code Detail

generate_impulse_force

Control & Dynamics 중심의 Octave 학습 예제

mylib/inst/generate_impulse_force.m

목록으로

코드를 복사해 Octave에서 바로 실행할 수 있습니다.

카테고리

mylib Utilities

library

코드 길이

36

lines

작성자

-

날짜 정보 없음

패키지

none

pkg load

함수 시그니처

function F = generate_impulse_force(tspan, dt, impulse_span, x0)

전체 코드

36 lines

function F = generate_impulse_force(tspan, dt, impulse_span, x0)
    % 임펄시브 신호를 생성하는 함수
    % input:
    % - tspan : 시간 구간 [t_start, t_end]
    % - dt : 시간 간격
    % - impulse_span : 임펄스가 발생하는 시간 구간 [t1, t2]
    % - x0 : 초기 위치 벡터 (자유도 개수에 맞춰 크기 결정) (dof x 1)
    % output:
    % - F : 외력 행렬 (dof x nt)

    % 자유도의 개수
    dof = length(x0);
    
    % 시간 점의 개수
    nt = floor((tspan(2) - tspan(1)) / dt);
    
    % 외력 행렬 초기화
    F = zeros(dof, nt);
    
    % 시간 구간에 해당하는 인덱스 계산
    impulse_start_index = floor((impulse_span(1) - tspan(1)) / dt) + 1;
    impulse_end_index = floor((impulse_span(2) - tspan(1)) / dt) + 1;
    
    % 하프 사인 신호 생성 (t1에서 t2까지)
    span_axis = linspace(impulse_span(1), impulse_span(2), impulse_end_index - impulse_start_index + 1);
    half_sine_wave = sin(pi * (span_axis - impulse_span(1)) / (impulse_span(2) - impulse_span(1)));
    
    % 하프 사인 신호의 적분값을 1로 만들기 위해 크기 보정
    scaling_factor = pi / 2;
    half_sine_wave = half_sine_wave * scaling_factor;
    
    % 1번 자유도에 하프 사인 외력 적용
    F(1, impulse_start_index:impulse_end_index) = half_sine_wave;
    
end

코드 해설

목적

  • Control & Dynamics 중심의 Octave 학습 예제

입력

  • 파라미터: tspan
  • 파라미터: dt
  • 파라미터: impulse_span
  • 파라미터: x0

출력

  • 반환값: F

실행 흐름

  1. 외력 행렬 초기화

핵심 함수

  • impulse_span
  • tspan
  • floor
  • length
  • linspace
  • sin
  • zeros

실습 과제

  • 질량/감쇠/강성 또는 전달함수 계수를 바꿔 응답 변화를 확인해보세요.
  • 핵심 함수 impulse_span의 인자를 한 가지 바꿔 결과 변화를 기록해보세요.

같은 카테고리 코드

이전 코드 decibell_overall 다음 코드 generate_sinusoid