Octave Atelier

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

Code Detail

main_02_pjm

Signal Processing + Statistics 중심의 Octave 학습 예제

ex-recv/02/02_pjm/main_02_pjm.m

목록으로

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

카테고리

Submission Archive

submission

코드 길이

60

lines

작성자

-

날짜 정보 없음

패키지

signal

pkg load

전체 코드

60 lines

%%%%%%%%%%    상단주석
%%
%%  1. Ticker, Price에 대한 Date 계열 데이터 csv를 읽음
%%  2. 평균,모분산,모표준편차,RMS 분석
%%
%%  2025. 03. 26. wed
%%  박준민 선임연구원
clc; clear;
pkg load signal


%%  CSV파일 불러오기
filename = 'google_data_2024.csv';
gg_2024 = csv2struct(filename,4,[2 1]);   % structure : Output.("Ticker").("Price") = (N,1) array


%%  통계지표 계산 1
stats_custom = statistics_custom(gg_2024.GOOGL.Close);   # 1x4 [ avg, var, std, rms ]
%%  통계지표 검증
stats_octave(1) = mean(gg_2024.GOOGL.Close);
stats_octave(2) =  var(gg_2024.GOOGL.Close,1);
stats_octave(3) =  std(gg_2024.GOOGL.Close,1);
stats_octave(4) =  rms(gg_2024.GOOGL.Close);

fprintf('\n Compare Results\n     AVG      VAR      STD      RMS\n')
fprintf('% 8.2f % 8.2f % 8.2f % 8.2f  --- %s\n',stats_custom,'Custom Fn')
fprintf('% 8.2f % 8.2f % 8.2f % 8.2f  --- %s\n',stats_octave,'Octave Fn')


%%  통계지표 계산 2
N_date = length(gg_2024.date);
N_wind = 30;
idx_date_ini = 30;

for idx_date = idx_date_ini:N_date
  range_date = idx_date - [0:N_wind-1];    # 입력 순서와 무관한 통계치 도출

  GgClose_stats_30d(idx_date,:) = statistics_custom( gg_2024.GOOGL.Close(range_date) );
end


%%  플로팅
LegendNames = {'mean','variance','std.dev.','rms'};
LegendProps = {'location','northwestoutside'};

xLim = [1 N_date-idx_date_ini];
xt_labels = gg_2024.date(idx_date_ini:44:N_date);

figure(1,'position',[300 300 640 480],'defaultaxesfontsize',14)
plot(GgClose_stats_30d(idx_date_ini:end,:),'linewidth',1)
title('Staticstics Properties for 30 market-days')
legend(LegendNames{:},LegendProps{:})
xlabel('Date')
xlim(xLim)
xticks(xLim(1):44:xLim(2))
xticklabels(xt_labels)
ylabel('Statistics Indicators')
grid on

코드 해설

목적

  • Signal Processing + Statistics 중심의 Octave 학습 예제

입력

  • 스크립트 상단에서 정의한 파라미터/입력 데이터를 사용합니다.

출력

  • 그래프/figure 출력

실행 흐름

  1. % 1. Ticker, Price에 대한 Date 계열 데이터 csv를 읽음
  2. % 통계지표 검증

핵심 함수

  • stats_octave
  • fprintf
  • GgClose_stats_30d
  • statistics_custom
  • xLim
  • Close
  • csv2struct
  • date

실습 과제

  • 샘플링 주파수나 입력 주파수를 바꿔 스펙트럼 변화를 비교해보세요.
  • 같은 연산을 내장 함수와 사용자 함수 두 방식으로 계산해 오차를 비교해보세요.
  • 질량/감쇠/강성 또는 전달함수 계수를 바꿔 응답 변화를 확인해보세요.

학습 팁

  • 그래프 비교 시 축 범위(XLim/YLim)와 단위를 먼저 고정하면 해석 오류를 줄일 수 있습니다.
  • 입력 파일 경로가 현재 작업 디렉터리 기준인지 먼저 확인하세요.

같은 카테고리 코드

이전 코드 csv2struct 다음 코드 statistics_custom