gpt4 book ai didi

arrays - 以色列的结果不一致

转载 作者:太空宇宙 更新时间:2023-11-03 19:30:44 27 4
gpt4 key购买 nike

举个简单的例子:

a = [1 2i];

x = zeros(1,length(a));
for n=1:length(a)
x(n) = isreal(a(n));
end

为了对代码进行矢量化,我尝试了:

y = arrayfun(@isreal,a);

但是结果不一样:

x =
1 0
y =
0 0

我做错了什么?

最佳答案

这显然是一个错误,但这里有一个解决方法:

>> y = arrayfun(@(x) isreal(x(1)),a)

ans =

1 0

为什么会这样?我不是完全确定,但看起来当您调用ISREAL 之前对变量执行索引操作时如果虚部为零,它会从数组元素中删除“复杂”属性。在命令窗口中试试这个:

>> a = [1 2i];         %# A complex array
>> b = a(1); %# Indexing element 1 removes the complex attribute...
>> c = complex(a(1)); %# ...but we can put that attribute back
>> whos
Name Size Bytes Class Attributes

a 1x2 32 double complex
b 1x1 8 double %# Not complex
c 1x1 16 double complex %# Still complex

显然,ARRAYFUN必须在内部维护它传递给 ISREAL 的数组元素的“复杂”属性,因此即使虚部为零,也将它们都视为复数。

关于arrays - 以色列的结果不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3602587/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com