我正在尝试在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/

10-12 20:13