求助matlab编程
下面matlab编程中,经过fft2变换后,k和fftk应该怎么表示呢?下面中的k和fftk是有问题的,但是我不清楚怎么去正确表示,请指教。
n1=100;n2=100;
for x=1:2*n1
for y=1:2*n2
test(x,y)=exp(sin(2*(x-1)*pi/n1+3*(y-1)*pi/n2));
testdx(x,y)=2*cos(2*(x-1)*pi/n1).*exp(sin(2*(x-1)*pi/n1+3*(y-1)*pi/n2));
end
end
testk=fft2(test,2*n1,2*n2);
k=[0:n1-1,-n1:-1];%问题在此处以及下一行
fftk=repmat(k,200,1);
testdxk = fftk.*testk*i;
testdx2 = ifft2(testdxk,2*n1,2*n1);
figure;
mesh(real(testdx2));
title('real part');
figure;
mesh(testdx);
title('anaylysis part');
返回小木虫查看更多
今日热帖
京公网安备 11010802022153号
帮你联系下Toauto,看能不能帮到你。
Toauto你好!能不能帮忙看下楼主的问题,谢谢啦!@Toauto
请楼主贴一下出错信息,另外fftk=repmat(k,200,1);的右括号成了全角的了
n1=100;n2=100;
for x=1:2*n1
for y=1:2*n2
test(x,y)=exp(sin(2*(x-1)*pi/n1+3*(y-1)*pi/n2));
testdx(x,y)=2*cos(2*(x-1)*pi/n1).*exp(sin(2*(x-1)*pi/n1+3*(y-1)*pi/n2));
end
end
testk=fft2(test,2*n1,2*n2);
k=[0:n1-1,-n1:-1];
fftk=repmat(k,200,1);
testdxk = fftk.*testk*i;
testdx2 = ifft2(testdxk,2*n1,2*n1);
figure;
mesh(real(testdx2));
title('real part');
figure;
mesh(testdx);
title('anaylysis part');
error =abs(testdx-testdx2);
figure;
mesh(error);
右边的括号是我打错了。这个程序可以运行出来,但问题在于结果不对,就是误差error很大,正确的误差在10的负13次方左右,而上面运行出来的结果在0到10之间,我经过分段测试后,发现问题在k和fftk上,我不知道怎么去定义这个200行200列的矩阵fftk,请指教
,