gpt4 book ai didi

matlab - 索引到向量

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

谁能解释一下为什么示例 A 中的结果是 1x6 向量(这是有道理的,也是我所期望的)而示例 B 中的结果是 1x4 向量?

在示例 B 中,如果我将 newvec 的大小预定义为 1x6 向量,则结果是正确的 1x6 向量。只是不明白发生了什么。

示例 A

vec = [0 2 3 0 5 0]     %1x6
newvec(vec == 0) = 1 %produces a 1 x 6 vector

示例 B

vec = [0 2 3 0 5 3]     %1 x 6
newvec(vec == 0) = 1 %produces a 1 x 4 vector

最佳答案

如果在您调用第二行时 newvec 不存在,MATLAB 只会将其变大以容纳您设置为 1 的索引。

你实际上在做的是:

newvec([1 4 6]) = 1;

newvec([1 4]) = 1;

类似地,如果 vec 实际上是一个 2D/3D 等矩阵,newvec 将以 1 x N 的形式出现,其中 N 是任意的最高索引号,不保留原矩阵的形状。

因此,在这些情况下,您需要:

1) 首先将newvec预分配为vec的大小。

2) 改为执行 newvec = (vec==0)

关于matlab - 索引到向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24203618/

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