Matlab - 如何修复:警告:显示复杂输入的实部?

时间:2013-01-24 17:51:53

标签: matlab fft ifft

给出代码

function [nImg,mask] = myFunc(img,rl,rh)


    [n m] = size(img);
    mask = ones(n, m);

    % do some stuff
    %   more 
    %   and more 
    % 

    fourierImg = fft2(img); % take the fourier transform 2d for the given image
    fourierImg = fftshift(fourierImg); %  shift the fourier transform 
    output = mask.*fourierImg; % calc with the mask  % THAT LINE CAUSES 
    %  Warning: Displaying real part of complex input ? 
    ishifting = ifftshift(output); % grab the DC element 
    nImg = ifft2(ishifting); % inverse back to the image dimension

end

我执行时不断获取:Warning: Displaying real part of complex inputoutput = mask.*fourierImg; % calc with the mask行。

我该如何解决?

此致

1 个答案:

答案 0 :(得分:3)

警告意味着您正试图在实轴上绘制复杂值。

我相信不会触发该警告的那一行,而是代码中其他地方的plot命令(或其类似命令)。

FFT变换的结果通常很复杂,因此如果要绘制这些值,请使用两个图:一个用于幅度,一个用于相位(或一个用于实部,一个用于虚部,但是这种做法远不常见)。要获得大小,请使用abs命令。

根据您的评论,而不是imshow(X)尝试imshow(abs(X))imshow(real(X))