generate_impulse_force
Control & Dynamics 중심의 Octave 학습 예제
mylib/inst/generate_impulse_force.m
함수 시그니처
function F = generate_impulse_force(tspan, dt, impulse_span, x0) 전체 코드
전체 코드를 복사해서 Octave에서 바로 실행할 수 있습니다.
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
실행 흐름
- 외력 행렬 초기화
핵심 함수/주제
impulse_spantspanfloorlengthlinspacesinzeros
실습 과제
- 질량/감쇠/강성 또는 전달함수 계수를 바꿔 응답 변화를 확인해보세요.
- 핵심 함수 impulse_span의 인자를 한 가지 바꿔 결과 변화를 기록해보세요.
학습 팁
같은 카테고리의 다른 코드
- clamp
mylib/inst/clamp.m - decibell_overall
mylib/inst/decibell_overall.m - generate_sinusoid
mylib/inst/generate_sinusoid.m - load_struct_txt
mylib/inst/load_struct_txt.m - make_axes
mylib/inst/make_axes.m - my_diff
mylib/inst/my_diff.m - my_mean
mylib/inst/my_mean.m - my_rms
mylib/inst/my_rms.m - my_std
mylib/inst/my_std.m - my_sum
mylib/inst/my_sum.m