ft2d.m

来自「任意常用二维函数傅里叶变换」· M 代码 · 共 43 行

M
43
字号
function FT2D(fun,D1,D2)%实现二维函数的傅立叶变换
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% fun为输入函数,D1、D2分别为x、y的范围        %
% 姓名:雷华       学号:10511060              %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
error(nargchk(3,3,nargin));
fun=fcnchk(fun);
N1=D1^2;
N2=D2^2; 

k1=-N1/2:N1/2-1;%x方向的离散数据个数
k2=-N2/2:N2/2-1;%y方向的离散数据个数
x = (D1/N1)*k1;	%x的离散值
y = (D2/N2)*k2; %y的离散值
[xArray yArray]=meshgrid(x,y);%取x,y的网格坐标
dx = D1/N1;    %x方向的空间取样间隔
dy = D2/N1;    %y方向的空间取样间隔

f=feval(fun,xArray,yArray);%输入函数
 
absf=abs(f);  %取函数值的绝对值
absf=255.*(absf./max(max(absf)));%函数值的绝对值按比例变换到0-255,用于显示
imf=im2uint8(absf);     %将其转换为uint8类型的数

figure;
subplot(1,2,1);
imshow(imf);title('the original Function');%以灰度值的方式显示原函数


ft = fftshift(fft2(fftshift(f))); %求原函数的傅立叶变换

absft=abs(ft);  %取函数值的绝对值
absft=255.*(absft./max(max(absft)));%函数值的绝对值按比例变换到0-255,用于显示
imft=im2uint8(absft);%将其转换为uint8类型的数

subplot(1,2,2);
imshow(imft);title('the FFT result');%以灰度值的方式显示原函数
figure,
mesh(xArray,yArray,abs(f));%原函数的立体图
figure,mesh(xArray,yArray,abs(ft)); %傅立叶变换后的立体图


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?