main_02_pjm
Signal Processing + Statistics 중심의 Octave 학습 예제
ex-recv/02/02_pjm/main_02_pjm.m
전체 코드
전체 코드를 복사해서 Octave에서 바로 실행할 수 있습니다.
%%%%%%%%%% 상단주석
%%
%% 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. Ticker, Price에 대한 Date 계열 데이터 csv를 읽음
- % 통계지표 검증
핵심 함수/주제
stats_octavefprintfGgClose_stats_30dstatistics_customxLimClosecsv2structdate
실습 과제
- 샘플링 주파수나 입력 주파수를 바꿔 스펙트럼 변화를 비교해보세요.
- 같은 연산을 내장 함수와 사용자 함수 두 방식으로 계산해 오차를 비교해보세요.
- 질량/감쇠/강성 또는 전달함수 계수를 바꿔 응답 변화를 확인해보세요.
학습 팁
- 그래프 비교 시 축 범위(XLim/YLim)와 단위를 먼저 고정하면 해석 오류를 줄일 수 있습니다.
- 입력 파일 경로가 현재 작업 디렉터리 기준인지 먼저 확인하세요.
같은 카테고리의 다른 코드
- 수치미분
ex-recv/01/01-CJW-20250321/수치미분.m - main_cjw
ex-recv/01/01-CJW-20250321/main_cjw.m - main-my_diff
ex-recv/01/01-JKH-20250319/main-my_diff.m - hw_1_kim-gpt
ex-recv/01/01-KSG-20250318/hw_1_kim-gpt.m - hw_1_kim
ex-recv/01/01-KSG-20250318/hw_1_kim.m - [Octave] HW#1
ex-recv/01/01-LSH-20250319/[Octave] HW#1.m - Octave_Moon_250319
ex-recv/01/01-MJY-20250319/Octave_Moon_250319.m - Octave01_Park,jm_250319
ex-recv/01/01-PJM-20250319/Octave01_Park,jm_250319.m - [Octave]250318_RYU_poly,dff
ex-recv/01/01-RJW-20250321/[Octave]250318_RYU_poly,dff.m - 과제1_신찬영연구원
ex-recv/01/01-SCY-20250319/과제1_신찬영연구원.m