我有两个向量如下:
p = zeros(5,1);
hx = [0.1; 0.3; 0.7; 0.9; 0.2];
Run Code Online (Sandbox Code Playgroud)
任务是将pfrom 0中的1元素替换为if中的元素hx >=0.5.成果输出:
p =
0
0
1
1
0
Run Code Online (Sandbox Code Playgroud)
它可以通过下面的代码来实现,我不明白的是:作为pos = find(hx >= 0.5);2D矢量,如何理解p(pos,1)=1;?最后一行代码如何知道哪个索引p对应于正确的元素pos?这两者之间似乎没有明显的联系.另一方面,如何通过for循环和if语句来完成?
pos = find(hx >= 0.5);
p(pos,1)=1;
Run Code Online (Sandbox Code Playgroud)
find返回括号中的条件为真的(线性)索引列表.在你的情况下,这将是[3;4],因为在元素3和4中满足条件.
第二行将元素设置为由行指示,第pos1列为1.
你可以做一个循环
for idx = 1:length(hx);
if hx(idx) >=0.5
p(idx,1) = 1;
end
end
Run Code Online (Sandbox Code Playgroud)
但这将非常非Matlab/Octave.会好得多
p(hx>=0.5) = 1;
Run Code Online (Sandbox Code Playgroud)
这避免了绕道而行 find