Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.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 嵌套If语句_Matlab_If Statement_Nested Loops - Fatal编程技术网

Matlab 嵌套If语句

Matlab 嵌套If语句,matlab,if-statement,nested-loops,Matlab,If Statement,Nested Loops,我的代码基本上是错误检查,显然不是所有的错误检查都会在同一次迭代中满足条件。我基本上做的是一个无限循环,在其中我做了几个循环(每个循环处理一个特定的错误检查),下面是我的代码: while(1) if(error1(x) < 0.001) *condition statements* break; else while(error1(x) >= 0.001) *condition statements* end 我目前没有Matlab的访问权限,你们认为它能工作吗?

我的代码基本上是错误检查,显然不是所有的错误检查都会在同一次迭代中满足条件。我基本上做的是一个无限循环,在其中我做了几个循环(每个循环处理一个特定的错误检查),下面是我的代码:

while(1)

if(error1(x) < 0.001)

*condition statements*

break;

else

while(error1(x) >= 0.001)

*condition statements*

end 

我目前没有Matlab的访问权限,你们认为它能工作吗?如果没有,请您提供如何在满足所有错误检查条件后立即退出无限循环的指导?提前谢谢。我唯一的问题是退出无限循环。

这里有一个很好的方法来做多个测试,但只在第一个成功的测试上做一些事情:

x = 5;
switch true
    case x > 10
        fprintf(1, 'x is greater than 10\n')
    case x > 8
        fprintf(1, 'x is greater than 8\n')
    case x < 6
        fprintf(1, 'x is less than 6\n')
    case y == 3
        fprintf(1, 'y equals three\n')
    otherwise
        fprintf(1, 'no conditions were met\n')
end
x=5;
切换为真
案例x>10
fprintf(1,'x大于10\n')
案例x>8
fprintf(1,'x大于8\n')
案例x<6
fprintf(1,'x小于6\n')
案例y==3
fprintf(1,'y=3\n')
否则
fprintf(1,'未满足任何条件\n')
结束
它使代码非常干净,易于理解/修改。与C语言不同,在C语言中,您可以从一个案例“失败”到下一个案例,而在Matlab中,您只能执行一个案例(然后您将退出)。然而,使用OR构造,在一个案例中可能有多个条件:
案例x<6 | y>3
例如,如果满足任一条件(且之前的条件均不成立),则将运行该案例


无法确定这是你想要的,因为问题非常不清楚;但也许你会发现这很有用。请随意在评论中提出澄清问题。

哦,我忘了礼貌,提前谢谢!如果你不能访问matlab,我建议使用octave,它是免费的,支持基本相同的语言。不,问题是,我明天可以访问它,我只想知道这个方法是否有效,我现在不需要进一步研究,但非常感谢你的建议,我会调查的。你的代码不起作用,因为它在语法上不正确。缺少一些
end
。我不知道您要实现什么,因为我不理解您的描述。您是希望多个条件为真,还是只需要处理第一个为真的条件?因为如果只期望一个条件为真,那么
switch
语句将更加简洁。
break;

end;

x = x+1;

end
x = 5;
switch true
    case x > 10
        fprintf(1, 'x is greater than 10\n')
    case x > 8
        fprintf(1, 'x is greater than 8\n')
    case x < 6
        fprintf(1, 'x is less than 6\n')
    case y == 3
        fprintf(1, 'y equals three\n')
    otherwise
        fprintf(1, 'no conditions were met\n')
end