gpt4 book ai didi

matlab - Octave 在某些情况下替换向量中的元素

转载 作者:行者123 更新时间:2023-12-04 00:07:01 26 4
gpt4 key购买 nike

我有两个向量如下:

p = zeros(5,1);
hx = [0.1; 0.3; 0.7; 0.9; 0.2];

任务是将p中的元素从0替换为1 if元素在hx >=0.5。加速输出:

p =

0
0
1
1
0

可以通过下面的代码来实现,我不明白的是:as pos = find(hx >= 0.5);给出了一个二维向量,如何理解p( pos,1)=1;?这最后一行代码怎么知道 p 的哪个索引对应于 pos 中的正确元素?这两者之间似乎没有明显的联系。另一方面,如何通过for循环和if语句来完成呢?

pos = find(hx >= 0.5);  
p(pos,1)=1;

最佳答案

find 返回括号中的条件为真的(线性)索引列表。在您的情况下,这将是 [3;4],因为在元素 3 和 4 中满足条件。

第二行设置由pos表示的行和第1列为1的元素。

你可以做一个循环

for idx = 1:length(hx);
if hx(idx) >=0.5
p(idx,1) = 1;
end
end

但这将是非常非 Matlab/Octave 的。会更好

p(hx>=0.5) = 1;

通过find

避免绕道

关于matlab - Octave 在某些情况下替换向量中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38174739/

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