不知道你是什么算法。
问题在size的使用。
[d1,d2,d3,...,dn]
=
size(x),
for
n
>
1,
returns
the
sizes
of
the
dimensions
of
the
array
x
in
the
variables
d1,d2,d3,...,dn,
provided
the
number
of
output
arguments
n
equals
ndims(x).
if
n
does
not
equal
ndims(x),
the
following
exceptions
hold:
n
<
ndims(x)
di
equals
the
size
of
the
ith
dimension
of
x
for
,
but
dn
equals
the
product
of
the
sizes
of
the
remaining
dimensions
of
x,
that
is,
dimensions
n
through
ndims(x).
n
>
ndims(x)
size
returns
ones
in
the
"extra"
variables,
that
is,
those
corresponding
to
ndims(x)+1
through
n
i本身是个三维矩阵。
[m,n]=size(i);
但你读取i的size时,获取的参数只有两个,这样后面的n
=
真实的n*3了,问题出在这儿。
图片是个m*n*3的矩阵,你做fft之后,f依旧是m*n*3,而你算法中得到h是个m*n的矩阵系数,点乘肯定出错。
把你程序中的xlable和ylable换成xlabel和ylabel就能运行了啊。我试了,就成功了!
Warning:
Divide
by
zero.
Warning:
Log
of
zero
这是两个warning,可以不用管的。闲它提醒,可以在
除数
上加上eps,就行了;对于log就不太清楚