在matlab中计算两个函数的卷积

时间:2017-01-15 11:40:06

标签: matlab signal-processing convolution

我需要计算函数的卷积:
当-1 <1时,f(x)= 1。 x <2,0否则为x G(X)= SGN(X)*狄拉克(ABS(X)-1)

我有这段代码:

Fs=1;
t=-10:1/Fs:10;
d=dirac(abs(t)-1);
s=sign(t);
x=d.*s;
x2=1*(t>-1 & t<2);
spl=conv(x,x2,'same');
disp(spl);

但我得到的是很多NaN值 我的错误在哪里?我应该改变什么?

2 个答案:

答案 0 :(得分:1)

以下是一种估算离散时域中解的方法。这需要对代码进行一些更改:

  1. 提高采样率Fs以保留更多带宽。我用了100x以下。

  2. 用Kronecker delta替换Dirac delta函数以启用离散时间建模。

  3. 修改后的代码和结果如下:

    Fs=100; % use higher sampling rate
    t=-10:1/Fs:10;
    d=(abs(t)-1)==0; % use kronecker delta function for discrete-time simulation
    s=sign(t);
    x=d.*s;
    x2=1*(t>-1 & t<2);
    spl=conv(x,x2,'same');
    
    % plots to visualize the results
    figure;
    subplot(3,1,1);
    plot(t, x2);
    ylabel('f(x)');
    subplot(3,1,2);
    plot(t, x);
    ylabel('g(x)');
    subplot(3,1,3);
    plot(t, spl);
    xlabel('Time');
    ylabel('convolution');
    

    results

答案 1 :(得分:1)

试试这段代码:

amountOfValues