You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于傅里叶空间核的二维卷积快速计算:Matlab实现问题咨询

问题:基于FFT的卷积积分计算问题

需要数值计算如下积分:
积分表达式

当函数$f$以离散网格形式给出时,计划通过傅里叶空间乘法结合FFT高效计算该积分,对应傅里叶域关系如下:
傅里域关系
其中$\xi$和$\eta$为傅里叶变量。

遇到的问题

  • 用Matlab实现后,结果与解析解不匹配,且增大网格点数$N$后精度未提升
  • 无法理解代码中chess矩阵的作用

Matlab最小工作示例

N = 101;
x = linspace(-1, 1, N); hx = x(2)-x(1);
[X, Y] = meshgrid(x, x);

a = 1/2;
f = 2/pi*a*real(sqrt(1-(X.^2+Y.^2)/a^2));
f_pad = zeros(2*N, 2*N); f_pad(1:N, 1:N) = f;

k = linspace(0, pi/hx, N+1); k = [k k(end-1:-1:2)]; hk = k(3)-k(2);
[KX, KY] = meshgrid(k, k);
K = sqrt(KX.^2 + KY.^2);

chess = mod((1:2*N)+(1:2*N)',2); chess = -chess; chess(chess==0) = 1;

G = 1./K;
G(1,1) = 4*integral2(@(x,y) 1./(sqrt(x.^2+y.^2)),0,0.5*hk,0,0.5*hk)/hk^2;

R = ifft2(G.*2.*chess.*fft2(f_pad), 'symmetric'); 
R = R(N+1:end, N+1:end);

Rana = (a^2-x.^2/2) .* (abs(x)<=a) + ...
       real(a^2/pi*((2-x.^2/a^2).*asin(a./abs(x))+sqrt(x.^2-a^2)/a)) .* (abs(x)>a);

plot(Rana);
hold on;
plot(R((N-1)/2+1,:));

补充说明

  • $R$:积分结果
  • $f$:输入函数
  • $G$:傅里叶域中的核,$(0,0)$处奇点通过邻域均值处理
  • $Rana$:积分的解析解

内容的提问来源于stack exchange,提问作者Peter Uwson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 23:30:05