我需要计算函数的卷积:
当-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值 我的错误在哪里?我应该改变什么?
答案 0 :(得分:1)
以下是一种估算离散时域中解的方法。这需要对代码进行一些更改:
提高采样率Fs
以保留更多带宽。我用了100x以下。
用Kronecker delta替换Dirac delta函数以启用离散时间建模。
修改后的代码和结果如下:
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');
答案 1 :(得分:1)
试试这段代码:
amountOfValues