有人告诉我,abs(S)函数将数组中的所有负值更改为正的绝对值。在本例中,S是一个由数万个介于-1和1之间的值组成的巨大数组。
因此,根据我的理解,将数组中的值取二次方应该会得到完全相同的最终结果。
abs([4 -4 2]).^2 -> [4 4 2].^2 = [16 16 4]
[4 -4 2].^2 = [16 16 4]如果是这样,为什么将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);发布于 2017-09-28 02:17:14
根据您的示例判断,您的S矩阵似乎包含负值,然后,当对它们应用log10时,您会得到复数和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');应确保为imagesc提供了有效的数据类型-它们列在this documentation section的底部
数据类型:
single|double|int8|int16|int32|int64|D17|D18|D19|D20|D21
(如您所见,complex double等不被接受)。
当然,它也可能是其他东西,如果没有完整的例子,我们就不能真正知道。
https://stackoverflow.com/questions/46453194
复制相似问题