3

matlab で画像のフーリエ変換を見つけようとしています。ライブラリ関数の hep なしでこれを行っています。コードは次のとおりです。

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);

a=imread('lena128','bmp') の代わりに a=rand(1,128) を使用すると、そのエラーは発生しません。オンラインで検索したところ、同様の問題が見つかりました。しかし、解決策はありません。誰かが私のためにエラーを指摘できますか?

4

2 に答える 2

6

imread要素が整数である配列を提供しています(タイプuint8は だと思います)。次に、それらを複素数と組み合わせようとしていますが、うまくいきません。double特に、MATLAB はそれらをs やs などに自動的に変換しませんfloat

あなたはおそらくただ言うべきです

a=double(imread('lena128','bmp'));
于 2011-03-21T01:42:35.410 に答える
4

この関数は、グレースケール bmp イメージimreadの要素の行列を返します。uint8多くの MatLab 関数と操作は、double要素に対してのみ機能します。を使用して画像を double マトリックスに変換しますim2double

a=imread('lena128','bmp');
a=im2double(a);
于 2011-03-21T01:43:17.577 に答える