首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >S= abs(S).^2和S=S之间的差异^2

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

Stack Overflow用户
提问于 2017-09-28 00:46:13
回答 1查看 60关注 0票数 0

有人告诉我,abs(S)函数将数组中的所有负值更改为正的绝对值。在本例中,S是一个由数万个介于-1和1之间的值组成的巨大数组。

因此,根据我的理解,将数组中的值取二次方应该会得到完全相同的最终结果。

代码语言:javascript
复制
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会在几行代码之后创建以下错误?

代码语言:javascript
复制
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);
EN

回答 1

Stack Overflow用户

发布于 2017-09-28 02:17:14

根据您的示例判断,您的S矩阵似乎包含负值,然后,当对它们应用log10时,您会得到复数和imagesc抱怨。

例如:

代码语言:javascript
复制
>> 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等不被接受)。

当然,它也可能是其他东西,如果没有完整的例子,我们就不能真正知道。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46453194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档