main_02_mjy

Statistics + Control & Dynamics 중심의 Octave 학습 예제

ex-recv/02/02_mjy/main_02_mjy.m

코드 인덱스로 돌아가기

카테고리

Submission Archive

학습 소스 그룹

코드 길이

74

lines

작성자

-

날짜 정보 없음

패키지

io

pkg load 기준

전체 코드

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

% 주제: 하나의 데이터 세트를 읽어서 대표값과 특징을 계산하고 그리는 연습을 합니다.
% 프로그램 설명 : 구글의 2024년도 주가 데이터에 대해 통계 항목을 계산하고,
%               30일 기간을 기준으로 통계치를 계산하여 차트를 그리는 프로그램입니다.
% 작성자 : 문제영
% 작성 날짜 : 20250326
clc;clear
pkg load io
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 1. 구글의 2024년도 주가 데이터를 준비하라.
% 데이터 읽기
data = read_data('google_data_2024.csv');
data_date_cell = data(4:end,1); % 날짜 데이터 cell 형식
data_close_cell = data(4:end,2); % 종가 데이터 cell 형식
data_date = cellfun(@datenum, data_date_cell);
data_close = cell2mat(data_close_cell);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2. 1년치 데이터의 종가에 대해 통계 항목을 계산하라.
% 직접 만든 함수로 연산 실행
d_mean = data_m(data_close);
d_var = data_var(data_close);
d_dev = data_dev(data_close);
d_rms = data_rms(data_close);

% 옥타브 제공 함수로 연산 실행
d_O_mean = mean(data_close);
d_O_var = var(data_close,1);
d_O_dev = std(data_close,1);
d_O_rms = sqrt(mean(data_close.^2));

% 두 계산 결과 비교
fprintf("직접 평균: %f, Octave 평균: %f\n", d_mean, d_O_mean);
fprintf("직접 분산: %f, Octave 분산: %f\n", d_var, d_O_var);
fprintf("직접 표준편차: %f, Octave 표준편차: %f\n", d_dev, d_O_dev);
fprintf("직접 RMS: %f, Octave RMS: %f\n", d_rms, d_O_rms);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 3. 같은 데이터에서 30일째 이후부터 직전 30일에 대해서 통계 항목을 계산하고 차트를 그려라.
n_data = length(data_close);
after_days = 30;
data_date_after = data_date(after_days+1:end);

for i = after_days+1 : n_data

  data_after_days = data_close(i-after_days:i-1);

  data_close_m(i-after_days) = data_m(data_after_days); % 직전 30일 평균
  data_close_v(i-after_days) = data_var(data_after_days); % 직전 30일 분산
  data_close_d(i-after_days) = data_dev(data_after_days); % 직전 30일 표준편차
  data_close_rms(i-after_days) = data_rms(data_after_days); % 직전 30일 rms

end

% 차트 그리기
width = 1300; height = 800;
figure(1)
set(figure(1),'Position',[200 100 width height])

subplot(2,2,1)
plot_d(data_date_after, data_close_m, 'r', "종가 평균", "Mean");
xlabel('Date'); legend('평균');

subplot(2,2,2)
plot_d(data_date_after, data_close_v, 'b', "종가 분산", "Variance");
xlabel('Date'); legend('분산');

subplot(2,2,3)
plot_d(data_date_after, data_close_d, 'g', "종가 표준편차", "Standard Deviation");
xlabel('Date'); legend('표준편차');

subplot(2,2,4)
plot_d(data_date_after, data_close_rms, 'm', "종가 RMS", "RMS");
xlabel('Date'); legend('RMS');

코드 해설

목적

Statistics + Control & Dynamics 중심의 Octave 학습 예제

입력

  • 입력 파일: google_data_2024.csv

출력

  • 그래프/figure 출력

실행 흐름

  1. 주제: 하나의 데이터 세트를 읽어서 대표값과 특징을 계산하고 그리는 연습을 합니다
  2. 프로그램 설명 : 구글의 2024년도 주가 데이터에 대해 통계 항목을 계산하고,
  3. 1. 구글의 2024년도 주가 데이터를 준비하라
  4. 데이터 읽기
  5. 2. 1년치 데이터의 종가에 대해 통계 항목을 계산하라
  6. 직접 만든 함수로 연산 실행
  7. 옥타브 제공 함수로 연산 실행
  8. 두 계산 결과 비교
  9. 3. 같은 데이터에서 30일째 이후부터 직전 30일에 대해서 통계 항목을 계산하고 차트를 그려라

핵심 함수/주제

fprintflegendplot_dsubplotxlabeldatadata_devdata_m

실습 과제

  • 같은 연산을 내장 함수와 사용자 함수 두 방식으로 계산해 오차를 비교해보세요.
  • 질량/감쇠/강성 또는 전달함수 계수를 바꿔 응답 변화를 확인해보세요.
  • 축 범위와 라벨을 바꿔 그래프 해석성이 어떻게 달라지는지 확인해보세요.

학습 팁

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

같은 카테고리의 다른 코드