我正在尝试在Matlab中 vector 化if语句,但不确定如何执行。我想为正值分配一个“N”,为负值分配一个“S”。我想避免for循环,但这是我的代码:
LatDD = [23.0,12.3,-43.2,9.9,-40.7];
LatDir = ['' '' '' '' ''];
if (LatDD < 0)
LatDir = 'S'
else
LatDir = 'N'
end
显然,这无法完成我想要的操作,因为它实际上仅检查LatDD的第一个元素。我可以轻松地执行for循环,但希望将其 vector 化。我尝试了逻辑索引编制,但让我得到的只是另一个带有零或 vector 的 vector ,无论如何我都必须使用for循环进行检查。
最佳答案
您可以在此处使用逻辑索引,只需执行两次
LatDD = [23.0,12.3,-43.2,9.9,-40.7];
LatDir = ['' '' '' '' ''];
LatDir(LatDD < 0) = 'S';
LatDir(LatDD >= 0) = 'N';
由于您在这里有一个二进制选择,您甚至可以跳过所有步骤,方法是用所有
LatDir
预填充'N'
,然后将与负LatDD
值相对应的那些更改为'S'
LatDD = [23.0,12.3,-43.2,9.9,-40.7];
LatDir = ['N' 'N' 'N' 'N' 'N'];
LatDir(LatDD < 0) = 'S';
关于matlab - 向量化IF语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32960855/