카테고리
mylib Utilitieslibrary
코드와 해설을 함께 읽는 학습 문서
Code Detail
Signal Processing + Statistics 중심의 Octave 학습 예제
mylib/inst/Sample.m
코드를 복사해 Octave에서 바로 실행할 수 있습니다.
function obj = Sample(varargin)
90 lines
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 mylib/inst/clamp.m
mylib/inst/decibell_overall.m
mylib/inst/generate_impulse_force.m
mylib/inst/generate_sinusoid.m
mylib/inst/load_struct_txt.m
mylib/inst/make_axes.m
mylib/inst/my_diff.m
mylib/inst/my_mean.m