资源简介
利用VC编写的matlab mex文件,实现二维非等间距快速傅里叶变换。在matlab中可以像调用库函数一样调用nfft2。内附有函数说明文件,及matlab测试程序.
代码片段和文件信息
clear all;
clc;
M=1000;
N0=14*1; N1=N0;
x=rand(M1)-0.5; y=rand(M1)-0.5;
f_hat=rand(N1N0)+j*rand(N1N0);
%%%%%%%%% mode=1
k0=-N0/2:(N0/2-1); k1=(-N1/2:(N1/2-1))‘;
[kx ky]=meshgrid(k0k1);
tic;
for dd=1:M
xj=x(dd);
yj=y(dd);
temp1=exp(-2*pi*j.*(kx*xj+ky*yj));
temp2=f_hat.*temp1;
fjss(dd1)=sum(sum(temp2));
end
toc
tic
fjtest=nfft2(f_hatxy1);
toc
figure;plot(abs((fjtest-fjss))./abs(fjss));grid minor;
%%%%%%%%% mode=0
%fjtest=nfft2(f_hatxy0);
%figure;plot(abs(fjtest));grid minor;
% xy=importdata(‘D:\Program Files\Microsoft Visual Studio\MyProjects\nfft2d_VCtesting\x_array‘);
% f_hat=importdata(‘D:\Program Files\Microsoft Visual Studio\MyProjects\nfft2d_VCtesting\f_hat‘);
% fj=importdata(‘D:\Program Files\Microsoft Visual Studio\MyProjects\nfft2d_VCtesting\fj‘);
%
% x=xy(:1); y=xy(:2);
% f_hat=f_hat(:1)+j*f_hat(:2);
% fj=fj(:1)+j*fj(:2);
%
% M=19;
% N0=12; N1=14;
% for dd=1:N0
% index=(dd-1)*N1+(1:N1);
% ss(:dd)=f_hat(index);
% end
% f_hat=ss;
%
% k0=-N0/2:(N0/2-1); k1=(-N1/2:(N1/2-1))‘;
% [kx ky]=meshgrid(k0k1);
%
% for dd=1:M
% xj=x(dd);
% yj=y(dd);
% temp1=exp(-2*pi*j.*(kx*xj+ky*yj));
% temp2=f_hat.*temp1;
% fjss(dd1)=sum(sum(temp2));
% end
%
% figure;plot(abs(fjss-fj));grid minor;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1219 2009-12-30 14:50 nfft2说明文件.txt
文件 24576 2009-12-30 14:00 nfft2.mexw32
文件 1178678 2009-12-30 14:04 matlab_mx_error.bmp
文件 1427 2009-12-30 14:43 matlab_test.m
----------- --------- ---------- ----- ----
1205900 4
评论
共有 条评论