Matlab中的除法给出的值接近于零
我有以下代码从文件加载位图,该文件是256x256像素的灰度图像:Matlab中的除法给出的值接近于零,matlab,matrix,division,Matlab,Matrix,Division,我有以下代码从文件加载位图,该文件是256x256像素的灰度图像: a = imread('E:\images\pic1.bmp'); a = double(a(:, :, 1)); figure; imagesc(abs(a)); colormap(gray); axis off; axis equal; title('Input image'); rpm1 = exp(i * 2 * pi * rand(256)); theta1 = 2 * pi * rand(256); Iprim
a = imread('E:\images\pic1.bmp');
a = double(a(:, :, 1));
figure;
imagesc(abs(a));
colormap(gray);
axis off;
axis equal;
title('Input image');
rpm1 = exp(i * 2 * pi * rand(256));
theta1 = 2 * pi * rand(256);
Iprime1 = fft2((sqrt(a) .* rpm1));
A = abs(Iprime1);
phi1 = angle(Iprime1);
W = A / 2;
Q = cos(phi1 - theta1);
T = W ./ Q
当我在Matlab中检查输出T
时,它是一个包含0.0000到0.0009范围内的值的矩阵。
但是,当我分别显示W
和Q
并为单个元素手动计算T
时,它将显示为非零值
我遗漏了什么?
T=W./Q
按元素进行除法,即T(1,1)=W(1,1)/Q(1,1)
,所以在W为零的地方,T应该为零……什么是grt()
?我们不知道它返回什么,因此无法真正检查您的问题。对不起…grt是回转器变换…为了通用性,它可以用fft2(即二维傅立叶变换)代替。即使使用fft2,我也得到相同的结果@Roberts-Tettler矩阵W只有很少的零。。。。因此,毫无疑问,整个矩阵T将变为零,您希望看到什么输出(即手动计算的结果)?更重要的是,你到底想实现什么?我真的不理解你的问题,只需一步一步地浏览代码,看看值在哪里变为零或inf或非常高(对于Q矩阵条目)。部门本身不会造成任何问题