我被告知S
函数会将数组中的所有负值更改为正的绝对值。在这种情况下,abs([4 -4 2]).^2 -> [4 4 2].^2 = [16 16 4]
[4 -4 2].^2 = [16 16 4]
是一个庞大的数组,其中包含-1到1之间的数万个值。
所以,据我所知,将数组中的值设为二次幂应具有完全相同的最终结果。
S = abs(S).^2
如果是这种情况,为什么将S = S.^2
更改为Error using image
Invalid datatype for Image CData. Numeric or logical matrix required for image CData.
Error in imagesc (line 39)
hh = image(varargin{:},'CDataMapping','scaled');
Error in IHAVENOIDEAWHATIMDOING (line 53)
subplot(411); imagesc(T,F,10*log10(S),ratio);
会在以后的几行代码中创建以下错误?
prepare()
答案 0 :(得分:3)
根据您的示例判断,您的S
矩阵似乎包含负值,然后,在将log10
应用于它们时,您会得到复数和{{1}抱怨。
例如:
imagesc
您应该确保向>> imagesc(log10(-4))
Error using image
Invalid datatype for Image CData. Numeric or logical matrix required for image CData.
Error in imagesc (line 18)
hh = image(varargin{1},'CDataMapping','scaled');
提供有效的数据类型 - 它们列在this documentation section的底部:
数据类型:
imagesc
|single
|double
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
(如您所见,logical
等不被接受。)
当然,它也可能是别的东西,如果没有完整的例子,我们真的无法知道。