2011-03-21 188 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