Matlab条件赋值
有谁能建议一种处理条件赋值的较短方法吗。我已经发布了我正在处理的实际代码。我不认为这真的会简化它,但也许你可以从中提取一些元素,因此这里有一个包含相同逻辑的1行程序:Matlab条件赋值,matlab,conditional-statements,Matlab,Conditional Statements,有谁能建议一种处理条件赋值的较短方法吗。我已经发布了我正在处理的实际代码。我不认为这真的会简化它,但也许你可以从中提取一些元素,因此这里有一个包含相同逻辑的1行程序: if male(m,7)==0||male(m,7)==1 if female(f,7)==0||female(f,7)==1 Wfst = 1; end if female(f,7)==2||female(f,7)==3||female(f,7)==4
if male(m,7)==0||male(m,7)==1
if female(f,7)==0||female(f,7)==1
Wfst = 1;
end
if female(f,7)==2||female(f,7)==3||female(f,7)==4
Wfst = 1/2;
end
if female(f,7) == -1
Wfst = 1/2;
end
end
if male(m,7)==2||male(m,7)==3||male(m,7)==4
if female(f,7)==0||female(f,7)==1
Wfst = 0;
end
if female(f,7)==2||female(f,7)==3||female(f,7)==4
Wfst = 1;
end
if female(f,7) == -1
Wfst = 1/2;
end
end
与
if (a > 10)
b = 5;
else
b = 10;
end
这简化为
b = (a > 10)*5 + ~(a > 10)*10;
你可以替换
b = 10 - (a > 10)*5;
与
本着类似的精神,对于未来,如果您碰巧拥有&&
而不是|
,那么您可以使用matlab函数all
代替您可以使用的任何。像这样:
any(a == [n1, n2, n3])
它不比你的短,但很容易理解。可能的修订版。删除你的一个问题。
a == n1 || a == n2 || a == n3
any(a == [n1, n2, n3])
switch male(m, 7)
case {0, 1}
switch female(f,7)
case {0, 1}
Wfst = 1;
case {2, 3, 4}
Wfst = 1/2;
case -1
Wfst = 1/2;
end
case {2, 3, 4}
switch female(f,7)
case {0, 1}
Wfst = 0;
case {2, 3, 4}
Wfst = 1;
case -1
Wfst = 1/2;
end
end