Array dimensions must match for binary array op.

2 次查看(过去 30 天)
%b
lake=imread('lake.tif');
lake_fft=fftshift(fft2(lake));
[M,N]=size(lake_fft);
lap_filt=zeros(M,N);
for i=1:M
for j=1:N
lap_filt(i,j)= -4*pi^2*((i-M/2)^2+(j-N/2)^2);
end
end
lake_fft=lake_fft.*lap_filt;
lake_reconstruct=ifft2(ifftshift(lake_fft));
figure(1)
subplot(1,2,1);imshow(lake);title('Original Image')
subplot(1,2,2);imshow(lake_reconstruct,[]);title('Laplace frequency')
Im getting the following errors:
Array dimensions must match for binary array op.
(line 12)
lake_fft=lake_fft.*lap_filt;
not sure what the problem is and how it can be solved
whos lakess
Name Size Bytes Class Attributes
lakess 512x512x2 524288 uint8

采纳的回答

Cris LaPierre
Cris LaPierre 2020-9-26
The code runs just find for me. I don't have 'lake.tif', but I don't think that should matter.
Try clearing your workspace or restarting MATLAB.
  5 个评论
Cris LaPierre
Cris LaPierre 2020-9-26
Your image seems to have an unexpected 3rd dimension. I plot both below. All values in the second "sheet" are 255, resulting in a white image (hard to see that here since the page is white). I think you can ignore the second sheet.
lake = lake(:,:,1);
Here are the images:
imshow(lake(:,:,1))
imshow(lake(:,:,2))

请先登录,再进行评论。

更多回答(0 个)

标签

产品


版本

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by