Array dimensions must match for binary array op.

%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

2 个评论

No idea what lakess is. It's not used in your code.
yeah its the same as lake in my code

请先登录,再进行评论。

 采纳的回答

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 个评论

I did but I'm stil getting the same issue. Think the problem is with the lake image since I deleted all my code and just tried to output it but it would still show me errors like this:
Multi-plane image inputs must be RGB images of size MxNx3.
Consider attaching the image to your post then. Use the paper clip icon.
solved the problem, just had to change the dimensions of the image using
lake=lake[:,:,1];
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))
that makes sense, thank you very much!

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Logical 的更多信息

产品

版本

R2020b

标签

Community Treasure Hunt

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

Start Hunting!

Translated by