Matlab中矩阵中条件的变量替换

时间:2016-11-16 11:47:24

标签: matlab matrix conditional

目前,我实现了这样的目标:

b = a;
b(b > 0) = 1;
b(b < 0) = -1;

这对我有用但似乎不优雅。当然有更好的方法吗?一个班轮?

2 个答案:

答案 0 :(得分:3)

例如

b=sign(a);

这也应该这样做。

答案 1 :(得分:2)

安德的回答是我要在这里回答的问题。这是另一个作为心理锻炼的人。您可以使用def bar(): exec("data = [1, 2, 3]") return vars()["data"] bar() # Returns [1, 2, 3] 运算符实现相同的功能:

logical

上述表达式的优雅是这样的,对于除{0}之外的任何b = (a > 0) - (a < 0); 值,只有等式的一部分是&#34; on&#34;在任何给定的时间。如果a的任何值为正,则输出将为a logical,因为等式的左侧会激活,而右侧则不会。同样,如果true的任何值为负数,则等式的右侧会激活并评估为a,而左侧则不会。右侧有一个负号,因此这会合并到-1。这与左侧的所有组合都合并到true精度数组,从而完成了我们的输出。当double的任何值等于0时,检查表达式给出的内容也是谨慎的。由于这两个表达式都不会激活,因此对于两个表达式,这将评估为a logical,和false合并为0,这是我们想要的结果。

实施例

false - false