MATLAB File Exchange:Simple Function Generator

MATLAB File Exchange

このサイト、MATLABユーザーが自分の作ったファイルをアップロードしたり
そうしたファイルをダウンロードしたりするmathworks社のサイトです。

先日、MATLAB File ExchangeにSimple Function Generator(sfg.m)
を久々に投稿したので紹介します。
MATLAB FileExchange sfg.m

fig2

今は全く英語を使わない仕事なので、英語で何かやるの憂鬱なので
ここで日本語で詳しく紹介しますね。

先ほどMATLAB File Exchangeみたらsfg.mの解説書きかけ投稿してしまったみたいです。

Simple Function Generator(sfg.m)

概要
ファイル名:sfg.m
主な周期波形の生成およびそのスペクトル表示をする
簡単なフソフトウェア上のァンクションジェネレーターです。

sfg.mについて
その波形は
1.サイン波
2.矩形波(duty50%)
3.duty矩形波
4.三角波(二等辺三角形)
5.のこぎり波
6.スイープ
細かく言えばこの6種類を出力します。
さらに、引数でanalyzeモードとしたときは
出力信号の時刻歴波形およびFFTによるスペクトル表示を
グラフ出力します。

これらの信号生成は、通常MATLABオプションのSignalProcessingToolbox
が必要になると思われますが、本プログラムはMATLAB本体があればOKです。

sfg.mの使い方

はじめての方へ

まずMATLABコマンドウインドウで

>>sfg(‘demo’)

と入力してください。
すると、このファイルで生成できるすべての波形と周波数スペクトルのサンプルが
コマンドの引数とともに表示されます。

y=sfg(type,t,ff,f0,f1,ana)

引数の概要

type:波形の種類
‘sin’:サイン波
‘sq’:矩形波(duty50%)
‘du’:duty波(0<duty%<100)
‘tr’:二等辺三角波
‘sa’:のこぎり波
‘sw’:スイープ波
‘demo’:デモモード(全波形のサンプルおよびFFT)

t:sec時間ベクトル、ただしt=[t0,ts,t1]の形式であること。
t0:開始時間、ts:サンプリングタイム(時間刻み)、t1:終了時刻

ff:Hz基本周波数(スイープの場合は1/スイープ時間)

f0:duty比%(type=’du’の場合)
f0:スイープ開始周波数Hz(type=’sw’の場合)

f1:スイープ波形の1/ff秒後の目標(終了)周波数

ana:1にした場合のみアナライズモード(波形とそのスペクトルをプロット)

出力

y:出力波形(ただし時間データおよびfft結果は出力されない。)

使用例

a.typeがsin,sq,sa,trの場合
y=sfg(type,t,ff)
y=sfg(type,t,ff,0,0,1) アナライズモード

b.typeがduの場合
y=sfg(type,t,ff,f0)
y=sfg(type,t,ff,f0,0,1) アナライズモード

c.typeがswの場合
y=sfg(type,t,ff,f0,f1)
y=sfg(type,t,ff,f0,f1,1) アナライズモード

その他便利な使い方

y=sfg(‘sin’,t,ff,ff,2*ff,0)  ※第4,5引数の1,10は無視されます
y=sfg(‘sw’,t,ff,ff,2*ff,0)  ※typeだけ変更すれ、出力が簡単に切り替わります。
typeがdemoの場合は第1引数のみ必須、
それ以外の時は最低第3引数まで必須でdu、swではそれぞれ第4、第5引数まで必須です。
引数はsin,sw,tr,saでは第4,5引数を与えておいても悪影響を及ぼしません。
duの場合第5引数に適当な値を与えておいても悪影響を及ぼしません。

% ex 1: sin wave without plot
% t=0:0.01:10; % time range= 0 to 10sec
% ,time step = 0.01sec
% ff=2; % fundamental frequancy(Hz)
% y=sfg(‘sin’,t,ff); % sin wave
% ex 2: sin wave with plot
% t=0:0.01:10; % time range= 0 to 10sec
% ,time step = 0.01sec
% ff=2; % fundamental frequancy(Hz)
% y=sfg(‘sin’,t,ff,0,0,1); % sin wave
% arg4 & arg5 is dummy data
% ex 3: duty square wave with plot
% t=0:0.01:10; % time range= 0 to 10sec
% ,time step = 0.01sec
% ff=2; % fundamental frequancy(Hz)
% duty=70; % duty ratio(%) 0<duty<100
% y=sfg(‘du’,t,ff,duty,0,1); % duty square wave
% arg4 & arg5 is dummy data
% ex 4: sweep wave without plot
% t=0:0.01:10; % time range= 0 to 10sec
% ,time step = 0.01sec
% ft=2; % sweep target frequency(Hz)
% f0=1; % start frequency(Hz)
% f1=10; % target end frequency(Hz)
% duty=70; % duty ratio(%) 0<duty<100
% y=sfg(‘sw’,t,ft,f0,f1); % duty square wave

以上が久々にMATLAB File Exchangeに投稿したSimple Function Generator
sfg.mです。

周波数解析の勉強やフィルターのテストにお役立てください。
MATLABにはsoundっていうコマンドがありますので、
それと本プログラムをうまく組み合わせればオーディオ用のフィルターであれば
そこそこ実験もできるかと思います。

何かご質問あれば賜ります。
では!

Tags: , ,

Leave a Reply