gpt4 book ai didi

matlab - 使用矢量化赋值时出现意外的 matlab 行为

转载 作者:行者123 更新时间:2023-12-03 23:07:05 25 4
gpt4 key购买 nike

我在 matlab 中遇到了一些意想不到的行为,在执行向量化赋值时我无法理解这些行为:

>> q=4;

>> q(q==[1,3,4,5,7,8])
The logical indices contain a true value outside of the array bounds.

>> q(q==[1,3,4,5,7,8])=1

q =

4 0 1

为什么命令 q(q==[1,3,4,5,7,8])导致错误,但命令 q(q==[1,3,4,5,7,8])=1工作?以及它如何到达 4 0 1是输出?

最佳答案

q(i)的区别和 q(i)=a是前者必须产生数组元素的值;如果 i越界,MATLAB 选择给出错误而不是创造一个值(IMO 的好选择)。而后者必须向数组元素写入一个值;如果 i超出范围,MATLAB 选择扩展数组,使其足够大以能够写入该位置(这也被证明是一个不错的选择,它很有用并在代码中广泛使用)。通过添加零来扩展数字数组。

在您的具体情况下,q==[1,3,4,5,7,8]是逻辑数组 [0,0,1,0,0,0] .这意味着您正在尝试索引 i=3 .自 q有一个值,在索引 3 处读取是越界的,但我们可以在那里写入。 q通过添加零填充到大小 3,然后将值 1 写入第三个元素。

关于matlab - 使用矢量化赋值时出现意外的 matlab 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61838370/

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