使用符号变量对函数进行傅里叶变换

时间:2016-02-06 17:05:26

标签: matlab symbolic-math continuous-fourier

MATLAB无法计算此函数的fft

syms t;
x= 1/(1+t^2);
X= fft(x)

并抛出此错误:

  

未定义的功能' fft'对于输入参数类型为' sym'。

为什么不对符号变量进行傅立叶变换?我认为这应该是因为我们可能希望将结果作为符号值获得。

我也尝试用非符号变量解决问题。

t= -10:0.01:10;
x= zeros(2001);
x= 1/(1+t.^2);
fft(x)

这次我的错误是:

  

矩阵尺寸必须达成一致。

但是,它们具有相同的尺寸。 我的错在哪里?

2 个答案:

答案 0 :(得分:0)

documantation on fft说:

  

Y = fft(X)使用快速傅里叶变换(FFT)算法计算X的离散傅里叶变换(DFT)。

符号函数是连续的,而不是离散的。因此,算法失败了。

关于你的第二个问题:使用逐元素运算符,添加一个点:

t= -10:0.01:10;
x= zeros(2001);
x= 1./(1+t.^2);
fft(x)

MATLAB抱怨矩阵维度,因为你试图用一个长度为2001的向量来划分标量(即1 x 1矩阵)。元素分割解决了这个问题。

答案 1 :(得分:0)

来源:http://www.mathworks.com/matlabcentral/newsreader/view_thread/315950

  

FFT是数值离散傅里叶变换(DFT)的方法。

基本上,你提出的问题并不合理。 FFT被设计为在离散数据(数字序列)上以数字方式工作。

您想要的是符号表达式的傅里叶变换。为此,我相信你想要fourier