카테고리
Submission Archivesubmission
코드와 해설을 함께 읽는 학습 문서
Code Detail
Signal Processing + Statistics 중심의 Octave 학습 예제
ex-recv/02/02_ksg/main_02_ksg.m
코드를 복사해 Octave에서 바로 실행할 수 있습니다.
78 lines
################################################################################
% 데이터의 통계치(평균, 분산, 표준편차, rms)를 사용자정의함수와 내장함수 간 결과 비교
% 2025-03-26 / 김상곤
################################################################################
clc;clear;close all
pkg load signal
# 입력 변수 준비1 : csv파일 읽기 & 원하는 종류의 1년치 데이터 선정
filename = 'google_data_2024.csv';
data = read_custom_csv(filename); % 파일 불러오기
data_class = {'Close','High','Low','Open','Volume'}; % 데이터 분류
i_class = 1;
selected_data = data.(data_class{i_class}); % 데이터 분류 선택 (N, 1)
numeric_data = str2double(selected_data); % 문자열 > 숫자로 변환
filtered_data = numeric_data(~isnan(numeric_data)); % 숫자가 아닌 값 필터링 (N, 1)
# 입력 변수 준비2 : 30일 단위 분할 데이터 세트 만들기
i_start = 30; % 데이터 시작일
duration = 30; % 데이터 기간 선정 : 30일
data_sets = partitioning_data(filtered_data,i_start,duration); # (30, 220)
################################################################################
# 연산 실행1 : 1년치 데이터의 통계치 비교 (사용자정의함수 <-> 내장함수)
[m,v,s,r] = statistic_value(filtered_data); % User-defined Function
M = mean(filtered_data); % Built-in Function
V = std(filtered_data).^2;
S = std(filtered_data);
R = rms(filtered_data);
# 연산 실행2 : 30일 단위 데이터 세트 통계치
[m30,v30,s30,r30] = statistic_value(data_sets); # in (30, 220) out (1, 220) * 4
################################################################################
# 플로팅 변수 준비1 : 1년치 데이터 통계치 (사용자정의함수 <-> 내장함수)
value_UDF = [m,v,s,r]; % User-defined Function 사용
value_BIF = [M,V,S,R]; % Built-in Function 사용
value = [value_UDF; value_BIF].';
xtick_labels_1 = {'mean','variance','standard deviation','rms'};
legend_labels_1 = {'User-defined','Built-in'};
xlabel_1 = {'Statistic type'};
ylabel_1 = {'Statistics magnitude'};
title_1 = {'사용자정의함수 vs. 내장함수'};
# 플로팅 변수 준비2 : 30일 단위 데이터 세트 통계치
value_sets = [m30;v30;s30;r30];
legend_labels_2 = {'mean','variance','standard deviation','rms'};
xlabel_2 = {'Data sets index'};
ylabel_2 = {'Statistics magnitude'};
title_2 = {'직전 30일 데이터 통계치 분석'};
################################################################################
# 플로팅1 : 1년치 데이터 통계치 계산 결과 비교 (사용자정의함수 <-> 내장함수)
figure(1)
bar(1:size(value,1),value);
set(gca,'xticklabel',xtick_labels_1)
xlabel(xlabel_1)
ylabel(ylabel_1)
legend(legend_labels_1)
grid on
title(title_1)
# 플로팅2 : 30일 단위 데이터 세트 통계치
figure(2)
plot(1:size(value_sets,2),value_sets,'-o')
xlabel(xlabel_2)
ylabel(ylabel_2)
legend(legend_labels_2)
grid on
title(title_2)
################################################################################ ex-recv/01/01-CJW-20250321/수치미분.m
ex-recv/01/01-CJW-20250321/main_cjw.m
ex-recv/01/01-JKH-20250319/main-my_diff.m
ex-recv/01/01-KSG-20250318/hw_1_kim-gpt.m
ex-recv/01/01-KSG-20250318/hw_1_kim.m
ex-recv/01/01-LSH-20250319/[Octave] HW#1.m
ex-recv/01/01-MJY-20250319/Octave_Moon_250319.m
ex-recv/01/01-PJM-20250319/Octave01_Park,jm_250319.m