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
2 个评论
采纳的回答
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
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 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!