Sample

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

mylib/inst/Sample.m

코드 인덱스로 돌아가기

카테고리

mylib Utilities

학습 소스 그룹

코드 길이

90

lines

작성자

-

날짜 정보 없음

패키지

none

pkg load 기준

함수 시그니처

function obj = Sample(varargin)

전체 코드

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

classdef Sample < handle

    properties
        dt
        Tr
        Fs
        df
        nn

        tx
        fx

        Pref

        T_wind
        ov_r
        N_wind
        hann_w
        N_ov_r
    end

    methods

        function obj = Sample(varargin)
            % 기본값 설정
            obj.dt = 0.001;
            obj.Tr = 4;

            % 입력 인자 처리
            for i = 1:2:length(varargin)
                switch varargin{i}
                    case "dt"
                        obj.dt = varargin{i+1};
                    case "Tr"
                        obj.Tr = varargin{i+1};
                    otherwise
                        error("Unknown parameter: %s", varargin{i});
                end
            end

            % 계산 및 속성 저장
            obj.Fs = 1 / obj.dt;
            obj.df = 1 / obj.Tr;
            obj.nn = floor(obj.Tr * obj.Fs);
            obj.tx = 0: obj.dt: obj.dt * (obj.nn - 1);
            obj.fx = 0: obj.df: obj.df * (obj.nn - 1);
            obj.Pref = 2e-5;
        end

        function str = string(obj)
            str = fmt("dt = {obj.dt}, Tr = {obj.Tr}, Fs = {obj.Fs}, df = {obj.df}, nn = {obj.nn}");
            if ~isempty(obj.T_wind)
                str = fmt("{str}, \nT_wind = {obj.T_wind}, ov_r = {obj.ov_r}, N_wind = {obj.N_wind}, N_ov_r = {obj.N_ov_r}");
            end
        end

        function build_specgram_param(obj, varargin)
            % 기본값 설정
            T_wind = 0.1;  
            ov_r = 0.9;    
        
            % 입력 인자 처리
            for i = 1:2:length(varargin)
                switch varargin{i}
                    case "T_wind"
                        T_wind = varargin{i+1};
                    case "ov_r"
                        ov_r = varargin{i+1};
                    otherwise
                        error("Unknown parameter: %s", varargin{i});
                end
            end
        
            % 창의 크기 및 파라미터 계산
            N_wind = floor(T_wind * obj.Fs);
            hann_w = hanning(N_wind);
            N_ov_r = floor(ov_r * N_wind);
        
            % 속성에 저장
            obj.T_wind = T_wind;
            obj.ov_r = ov_r;
            obj.N_wind = N_wind;
            obj.hann_w = hann_w;
            obj.N_ov_r = N_ov_r;
        end
        
    end % methods

end % classdef

코드 해설

목적

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

입력

  • 파라미터: varargin

출력

  • 반환값: obj

실행 흐름

  1. 입력 인자 처리

핵심 함수/주제

floorerrorfmtlengthbuild_specgram_paramhanningisemptystring

실습 과제

  • 샘플링 주파수나 입력 주파수를 바꿔 스펙트럼 변화를 비교해보세요.
  • 같은 연산을 내장 함수와 사용자 함수 두 방식으로 계산해 오차를 비교해보세요.
  • 핵심 함수 floor의 인자를 한 가지 바꿔 결과 변화를 기록해보세요.

학습 팁

같은 카테고리의 다른 코드