Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab条件赋值_Matlab_Conditional Statements - Fatal编程技术网

Matlab条件赋值

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

有谁能建议一种处理条件赋值的较短方法吗。我已经发布了我正在处理的实际代码。

我不认为这真的会简化它,但也许你可以从中提取一些元素,因此这里有一个包含相同逻辑的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
            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