0

好的,让我切入正题。

我正在尝试使用 MATLAB(i)根据已知系数生成傅立叶级数,然后(ii)在已知脉冲时确定输出函数。

到目前为止,我使用此代码获取傅立叶级数:

clear all
syms x k L n
evalin(symengine,'assume(k,Type::Integer)');
a = @(f,x,k,L) (2/(pi*k))* sin((pi*k)/(2 * L));
fs = @(f,x,n,L) (1/2*L) + symsum(a(f,x,k,L)*cos(k*2*pi*x/L),k,1,n);
f = x;
pretty(fs(f,x,11,1))

这可以按需要工作。现在脉冲响应如下:

h = heaviside(x) * exp(-5*x);

现在,为了获得函数,我们需要对各自的函数进行卷积。但是当我输入以下内容时,我得到了错误:

x1 = fs(f,x,1,1);
conv(h,x1)

Undefined function 'conv2' for input arguments of type 'sym'.
Error in conv (line 38) 
c = conv2(a(:),b(:),shape);

任何帮助,将不胜感激

4

1 回答 1

0

那是因为conv只为数字输入定义。如果您想以符号方式找到卷积,则必须自己使用积分来象征性地输入方程。

回想一下,卷积积分定义为:

资料来源:维基百科

因此,你会这样做:

syms x tau;
F = int(h(tau)*x1(x-tau),'tau',-inf,+inf);

int是 MATLAB 中为您进行符号积分的函数。另请注意,卷积积分是可交换的,因此这也有效:

资料来源:维基百科

因此,如果您这样做了,您也应该得到相同的答案:

syms x tau;
F = int(h(x-tau)*x1(tau),'tau',-inf,+inf);

希望这可以帮助!

于 2015-05-23T16:09:03.980 回答