查看: 1055|回复: 5|关注: 0

[已答复] 如果通过傅里叶变换求导

[复制链接]

新手

5 麦片

财富积分


050


1

主题

2

帖子

0

最佳答案
发表于 2019-5-16 20:40:06 | 显示全部楼层 |阅读模式
对于一个已知函数U(x),想要对其求导,如果不用差分的话,可以通过傅里叶变化后得到傅里叶系数来求出这一导数值,用公式表达就是U'(x)=ifft{ jw * fft[U(x)] },其中w为对应于傅里叶变换后每一项的频率值,j是虚数符号,求大神解答该如何在matlab中实现
问题理论上感觉很简单,可是编了好久一直有问题。。。奔溃:(

MATLAB 基础讨论
版块优秀回答者

中级

1250 麦片

财富积分


5001500


0

主题

1718

帖子

252

最佳答案
  • 关注者: 42
发表于 2019-5-16 22:15:53 | 显示全部楼层
不就是DU=ifft(1j*fft(U));吗?
不会是你的U是不知道的吧!

新手

5 麦片

财富积分


050


1

主题

2

帖子

0

最佳答案
 楼主| 发表于 2019-5-16 22:25:19 | 显示全部楼层
WarnerChang 发表于 2019-5-16 22:15
不就是DU=ifft(1j*fft(U));吗?
不会是你的U是不知道的吧!

我试验了下,程序照着这个思路写的,可是结果并不对,麻烦大神帮忙看看
UB[TNI93(FCJ})OXMA0@{54.png

MATLAB 基础讨论
版块优秀回答者

中级

1250 麦片

财富积分


5001500


0

主题

1718

帖子

252

最佳答案
  • 关注者: 42
发表于 2019-5-17 11:43:29 | 显示全部楼层
天平 发表于 2019-5-16 22:25
我试验了下,程序照着这个思路写的,可是结果并不对,麻烦大神帮忙看看
...

close all;
clear all;
L=128;
X=10/L;
x=(0:L-1)*X;
S=10.*sin(x);
figure(1)
plot(x,S);
P3=fft(S);
for k=1:L
    P3(k)=P3(k)*1i*(k);
end
P5=ifft(P3);
figure(2)
plot(x(1:L),P5(1:L));
首先最后plot时,为什么要加abs呢?其次,是不是考虑减小步长

新手

5 麦片

财富积分


050


0

主题

6

帖子

0

最佳答案
发表于 2019-11-8 16:45:23 | 显示全部楼层
我现在也想按照这个思路求导数,但是没成功。你现在已经有什么好的解决思路吗?

新手

5 麦片

财富积分


050


0

主题

6

帖子

0

最佳答案
发表于 7 天前 | 显示全部楼层
我尝试了之后发现,确实可以通过傅里叶变换求导,而且分数阶导数都可以求。关键是只用正频部分。但是求导结果首尾存在异常值情况,而且阶数越高,异常值越大。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表