我试图计算一个数组的FFT,但我得到一个错误:* “数组大小不兼容”*。如何解决这个问题?下面是我的代码:
% Read the image
im = imread('image2.jpg');
% Convert the image to double precision
im = im2double(im);
% Compute the FFT of the image
F = fft2(im);
% Define the filter mask
mask = [-1 -1 -1; -1 8 -1; -1 -1 -1];
% Filter the FFT using the mask
F_filtered = F .* fftshift(mask);
% Display the magnitude of the filtered FFT
imshow(log(abs(fftshift(F_filtered))), []);
this error is coming
Arrays have incompatible sizes for this operation.
Error in task3 (line 32)
F_filtered = F .* fftshift(mask);
1条答案
按热度按时间uyhoqukh1#
在这行代码中,您尝试将掩码滤波器应用于傅立叶变换
F
。符号
.*
表示两个矩阵的逐个元素乘法。因此,当我们试图乘以位置时,两个矩阵应该具有相同的维度。根据定义,这里的
mask
具有尺寸[3 3]
。F
是image2.jpg
的傅立叶变换,可能与mask
的维数不同,因此,您会得到此错误。请将
mask
更改为与图像的傅立叶变换具有相同的尺寸,并且您不应该得到此错误。希望这有帮助!