

以下のバンドストップフィルタをmatlabでによプログラミングしています．

[code]

    %窓関数法によるFIRフィルタの設計
    wp = 0.2*pi; ws = 0.4*pi; %通過域端周波数,素子域端周波数
    w1 = 0.2*pi; w2 = 0.4*pi;
    w0 = (w1+w2)/2;
    trwidth = ws-wp; %遷移帯域幅
    N = ceil(6.6*pi/trwidth)+1 %ハミング窓の長さ (タップ長)
    win = hamming(N); %ハミング窓
    %窓関数によるFIRフィルタの設計 (単位インパルス応答)
    wc = (w2-w1)/2; %遮断周波数
    n = -(N-1)/2:(N-1)/2; %時刻の範囲
    h = (2*kroneckerDelta(n))-(diag(2*cos(n*w0))*transpose((wc/pi)*sinc(n*wc/pi))); %設計された単位インパルス応答
    subplot(2,2,1); 
    stem(n,h); %単位インパルス応答の図示
    axis([-(N-1)/2 (N-1)/2 -0.1 0.3]); grid;
    xlabel('Time n'); ylabel('g(n)');%設計されたFIRフィルタの周波数応答
    dw = 0.001; %周波数の刻み
    w = -20*pi:dw:20*pi; %周波数の範囲
    H = freqz(h,1,w);
    maxH = max(abs(H)); %周波数応答の最大値
    dBH = 20*log10(abs(H)/maxH); %振幅特性の正規化
    subplot(2,2,2);
    plot(w,dBH); %振幅特性の図示
    axis([-4*pi 4*pi -80 5]); grid;
    xlabel('Frequency \omega [rad]'); ylabel('|H(e^{j\omega})| [dB]');
    Rp = -min(dBH(1:ceil(wp/dw)+1)) %通過域リプルの確認
    As = -max(dBH(ceil(ws/dw)+1:length(w))) %阻止域減衰量の確認
    
[/code]

しかし，以下のようなエラーが出てしまい，バンドストップフィルタの単位インパルス応答の形成に必要な  
クロネッカーのデルタ関数が出力できません．（なお，クロネッカーのデルタ関数は，nと同期させて2を出力させたいと存じております．）

[code]

    関数 'kroneckerDelta' (タイプ'double' の入力引数) が未定義です。
    
    エラー: matlab_bandstopFIR (line 11)
    h = (kroneckerDelta(n))-(diag(2*cos(n*w0))*transpose((wc/pi)*sinc(n*wc/pi))); %設計された単位インパルス応答
    
[/code]

つきましては，大変恐縮ですが，どなた様か，ご存知の方がおられましたら，何卒ご教授願えますと，大変ありがたく存じます．  
何卒よろしくお願い申し上げます．


CC BY-SA 3.0
2016-07-29T04:40:13.103
27931
2017-06-01T02:43:05.607
2016-07-29T06:35:31.897
3054
17317
question
matlab
matlabで関数 'kroneckerDelta'が未定義といわれる


まず、kroneckerDelta関数 は Symbolic Math Toolbox に含まれるようなので、  
この[ツールボックスのインストール済みを確認](http://jp.mathworks.com/help/matlab/matlab_prog/calling-
functions.html#bsn_e9n-6)してください。


CC BY-SA 3.0
2016-07-29T06:40:15.813
27938
2016-07-29T06:40:15.813
3054
27931
answer