1.5 MATLAB 프로그램의 보고서 자동 생성 기능

목차에 대한 링크



MATLAB에 의한 화상 처리 · 컴퓨터 비전 입문 목차

개요



MATLAB으로 작성된 프로그램에서 실행 결과 보고서를 생성(발행)할 수 있습니다. 코드를 공유할 때 유용합니다.
보고서에는 실행 프로그램, 주석, 수식, 실행 결과 출력 및 그림 등이 포함될 수 있습니다.

보다 직관적으로 리포트 타입의 프로그램을 기술하는 경우는 라이브 스크립트 가 추천입니다.

(이 게시물도 라이브 스크립트를 사용하여 작성되었습니다)

지원 파일: I1_05_publish_butter.m

게시할 대상 확인



게시할 MATLAB 프로그램을 검토합니다.

code
type I1_05_publish_butter.m

output
%% バタワースフィルタの設計とフィルタリング
% 本デモは、雑音を加えた2トーン正弦波に対して、バタワースローパスフィルタを
% かける手順と、グラフの可視化の手順を示します。一般的なデジタルフィルタの
% 伝達関数は以下の表現で表わされます。
% 
% $$ H(z) = \frac{\sum^{N}_{k = 0}b_kZ^{-k}}{1 + \sum^{N}_{k = 1}a_kZ^{-k}} $$  
%% 初期化
clear all, close all, clc

%% フィルタリング対象の信号生成
Fs = 1000;
t = 0:1/Fs:1;                   % 時間ベクトルの定義
sig1 = sin(2*pi*15*t + pi/3);   % 正弦波信号1の生成
sig2 = sin(2*pi*42*t + pi/5);   % 正弦波信号2の生成
noise = randn(size(t));         % 雑音信号の生成
sig = sig1 + sig2 + noise;      % フィルタリング対象信号

%% フィルタ設計と特性の可視化
% フィルタの次数を7次、ナイキスト周波数で正規化されたカットオフ
% 周波数を0.1としたフィルタを設計します。Fs = 1000[Hz]の場合、
% カットオフ周波数は、1000/2 * 0.1 = 50[Hz]となります。
[b,a] = butter(7,0.1); % バタワースフィルタ設計
fvtool(b, a) % フィルタ特性の可視化

%% フィルタリング
out = filter(b,a,sig); % フィルタリング
% 入力信号と出力信号の時間軸波形可視化
subplot(2,1,1), plot(t,sig), grid
title('時間軸波形(フィルタリング前)')
subplot(2,1,2), plot(t,out), grid
title('時間軸波形(フィルタリング後)')

%% スペクトル推定
% ローパスフィルタにより、50[Hz]以下の成分が除去されている様子が
% 確認できます。
figure, periodogram(sig,[],[],Fs)    % 入力信号のスペクトル
title('パワースペクトル密度推定(フィルタリング前)')
figure,periodogram(out,[],[],Fs)    % 出力信号のスペクトル
title('パワースペクトル密度推定(フィルタリング後)')

% Copyright 2014 The MathWorks, Inc.

게시 실행



MATLAB 코드를 실행하여 HTML 형식의 보고서를 생성합니다.

워드 형식(.doc), LaTeX 형식(.tex), 파워포인트 형식(.ppt), XML 형식(.xml), PDF 형식(.pdf)에서도 출력할 수 있습니다.

code
publish("I1_05_publish_butter.m");

생성된 HTML의 보고서 검토



MATLAB 내장 브라우저에서 생성된 HTML 보고서를 검토합니다.

code
web(fullfile('html','I1_05_publish_butter.html'));



MATLAB 편집기로 게시



MATLAB 편집기에서 게시를 실행할 수도 있습니다.

code
edit I1_05_publish_butter.m



게시된 HTML에서 코드 검색



생성된 HTML 코드에서 코드를 검색할 수도 있습니다.

code
code = grabcode(fullfile('html','I1_05_publish_butter.html'))

output
code = 
    '%% バタワースフィルタの設計とフィルタリング
     % 本デモは、雑音を加えた2トーン正弦波に対して、バタワースローパスフィルタを
     % かける手順と、グラフの可視化の手順を示します。一般的なデジタルフィルタの
     % 伝達関数は以下の表現で表わされます。
     % 
     % $$ H(z) = \frac{\sum^{N}_{k = 0}b_kZ^{-k}}{1 + \sum^{N}_{k = 1}a_kZ^{-k}} $$  
     %% 初期化
     clear all, close all, clc

     %% フィルタリング対象の信号生成
     Fs = 1000;
     t = 0:1/Fs:1;                   % 時間ベクトルの定義
     sig1 = sin(2*pi*15*t + pi/3);   % 正弦波信号1の生成
     sig2 = sin(2*pi*42*t + pi/5);   % 正弦波信号2の生成
     noise = randn(size(t));         % 雑音信号の生成
     sig = sig1 + sig2 + noise;      % フィルタリング対象信号

     %% フィルタ設計と特性の可視化
     % フィルタの次数を7次、ナイキスト周波数で正規化されたカットオフ
     % 周波数を0.1としたフィルタを設計します。Fs = 1000[Hz]の場合、
     % カットオフ周波数は、1000/2 * 0.1 = 50[Hz]となります。
     [b,a] = butter(7,0.1); % バタワースフィルタ設計
     fvtool(b, a) % フィルタ特性の可視化

     %% フィルタリング
     out = filter(b,a,sig); % フィルタリング
     % 入力信号と出力信号の時間軸波形可視化
     subplot(2,1,1), plot(t,sig), grid
     title('時間軸波形(フィルタリング前)')
     subplot(2,1,2), plot(t,out), grid
     title('時間軸波形(フィルタリング後)')

     %% スペクトル推定
     % ローパスフィルタにより、50[Hz]以下の成分が除去されている様子が
     % 確認できます。
     figure, periodogram(sig,[],[],Fs)    % 入力信号のスペクトル
     title('パワースペクトル密度推定(フィルタリング前)')
     figure,periodogram(out,[],[],Fs)    % 出力信号のスペクトル
     title('パワースペクトル密度推定(フィルタリング後)')


     % Copyright 2014 The MathWorks, Inc.
     '

요약



MATLAB 프로그램의 자동 리포트 생성(퍼블리시)에 대해 소개했습니다.

코드나 실행 결과의 공유에 매우 편리한 기능입니다.

참고


  • MATLAB 코드 게시 및 공유
  • 라이브 스크립트 및 라이브 함수

  • 감사의 말



    이 기사는 @eigs 님의 livescript2markdown 을 사용하겠습니다.

    목차에 대한 링크



    MATLAB에 의한 화상 처리 · 컴퓨터 비전 입문 목차

    좋은 웹페이지 즐겨찾기