当前位置: 首页 > 有奖问答 >求助matlab编程

求助matlab编程

作者 陈昌荣
来源: 小木虫 150 3 举报帖子
+关注

下面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'); 返回小木虫查看更多

今日热帖
  • 精华评论
  • liusir3836

    帮你联系下Toauto,看能不能帮到你。
    Toauto你好!能不能帮忙看下楼主的问题,谢谢啦!@Toauto

  • Toauto

    请楼主贴一下出错信息,另外fftk=repmat(k,200,1);的右括号成了全角的了

  • 陈昌荣

    引用回帖:
    3楼: Originally posted by Toauto at 2013-04-08 13:08:55
    请楼主贴一下出错信息,另外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,请指教

猜你喜欢
下载小木虫APP
与700万科研达人随时交流
  • 二维码
  • IOS
  • 安卓