gpt4 book ai didi

arrays - 逻辑数组 - 在赋值 A(I) = B 中,B 和 I 中的元素数必须相同

转载 作者:行者123 更新时间:2023-12-02 06:33:52 24 4
gpt4 key购买 nike

我有A、B、C三个矩阵,当B大于A时,我想用A饱和这个值,它说I中的元素个数(也就是(B>A))必须是和A中的元素个数一样。我在下面查了下,是一样的。

>> A = [5 5 5; 5 5 5; 5 5 5];
>> B = [2 2 2; 2 2 2; 2 2 2];
>> C(B > A) = A
In an assignment A(I) = B, the number of elements in B and I must be the same.

>> numel(B > A)

ans =

9

>> numel(A)

ans =

9

>> numel(A>B)

ans =

9

这也很奇怪。

>> C(B < A) = A

C =

5 5 5 5 5 5 5 5 5

我刚刚想通了...

C(B>A) = B(B>A)

C=

 5     5     5     5     5     5     5     5     5

最佳答案

之所以是因为B > A 永不满足,并产生空集。这将产生空矩阵 ( [] )。 B的每一个元素实际上小于 A .因此,这相当于执行:

C([]) = A;

您正在尝试分配 A到矩阵中的无处,并且这些维度不匹配。为什么B < A有效是因为 B 的每个值小于 A , 所以 A 的分配会在这里工作。一般来说,您需要确保您在表达式右侧访问的元素总数必须等于要分配的表达式左侧元素的相同数量的元素。

正如您在评论中提到的那样:

C(B > A) = B(B > A)

会起作用。这相当于做:

C([]) = B([]);

...本质上,您没有执行任何操作,因此这是一个安全的操作。 B 中未访问任何值正在分配到 A 中的位置.

关于arrays - 逻辑数组 - 在赋值 A(I) = B 中,B 和 I 中的元素数必须相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24702385/

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