2011-03-21 205 views
3

我想在matlab中找到图像的傅里叶变换。我这样做没有库函数的功能。的代码是:matlab图像处理错误

clc; 
clear; 
N=128; 
a=imread('lena128','bmp'); 
zeros(N,N); 
for m=1:N 
    for n=1:N 
     w(m,n)=(exp(-1i*2*pi/N))^((m-1)*(n-1)); 
    end 
end 
af1=(w*a); 
af=((w*(af1.')).'); 

当我编译该程序时发生错误:

??? Error using ==> mtimes 
Complex integer arithmetic is not supported. 
Error in ==> qn4 at 12 
af1=(w*a); 

当我使用一个=兰特(1128),而不是= imread( 'lena128','BMP '),我没有得到那个错误。 我在网上搜索,发现类似的问题。但没有解决方案。任何人都可以为我指出错误吗?

回答

6

imread给你一个数组,其元素是整数(类型uint8,我认为)。然后,你试图将这些复杂的数字结合起来,这是行不通的。特别是,MATLAB不会自动将它们变成doublefloat或任何类型的东西。

你或许应该只是说

a=double(imread('lena128','bmp')); 
+0

谢谢。那工作。但我很惊讶。 – Brahadeesh 2011-03-21 02:14:49

4

imread函数返回uint8元素灰度BMP图像的矩阵。许多MatLab功能和操作仅适用于double元素。用im2double将图像转换为双矩阵。

a=imread('lena128','bmp'); 
a=im2double(a); 
+0

谢谢。那工作。 – Brahadeesh 2011-03-21 02:14:17