S = abs(S)。^ 2和S = S ^ 2之间的差异

时间:2017-09-27 16:46:13

标签: matlab

我被告知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()

1 个答案:

答案 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等不被接受。)

当然,它也可能是别的东西,如果没有完整的例子,我们真的无法知道。