【发布时间】:2014-12-02 04:28:26
【问题描述】:
我有一堆嵌套的“if”语句,我无法让它们按照我想要的方式流动。我有一个 if 语句,如果满足,我运行一个唯一性测试 (myuniquetest),如果这表明我的条件给出了一个唯一的结果,我想记录它并继续。我已经弄清楚了那部分但是,如果第一个条件没有给出唯一的结果,我想继续其余的 elseif 语句,看看后续的语句是否给出了唯一的结果。 (我在这段代码中总共有 8 个 elseif 语句,但我想我会使用相同的方法。)我的代码看起来像这样:
if edgedouble(y0-1, x0) == 1 && (y0-1)>=y1 && (y0-1)<=y2;
testpt = [y0-1, x0];
uni = myuniquetest(testpt, mypoints);
if uni ==1;
k = k+1;
mypoints{1,k} = testpt;
mypoints = testmypoints(mypoints, edgedouble, x1, x2, y1, y2);
end
elseif edgedouble(y0-1, x0+1) ==1 && (y0-1)>=y1 && (y0-1)<=y2 && ...
(x0+1)>=x1 && (x0+1)<=x2;
testpt = [y0-1, x0+1];
uni = myuniquetest(testpt, mypoints);
if uni ==1;
k = k+1;
mypoints{1,k} = testpt;
mypoints = testmypoints(mypoints, edgedouble, x1, x2, y1, y2);
end
etc....
end
我想要它做的是,如果 uni==0,继续到 elseif(condition2)(等等),但目前它只是停止。我尝试在每个嵌入的“if”语句之后添加一个 while 语句,所以它们看起来像这样:
if uni ==1;
(log my values, move on)
end
while uni==0
continue
end
但是,它使我的其余代码崩溃,随后 Matlab 崩溃。有没有更简单的方法来做到这一点?
唯一性函数代码如下:
function[uni] = myuniquetest(testpoint, mypoints)
mysize = size(mypoints);
for w = 1:mysize(2);
myt = isequal(testpoint, mypoints{1,w});
if myt == 1;
uni = 0;
break
else
uni = 1;
end
end
所有这些都在满足条件且唯一性时起作用,但它不起作用并且在满足条件但不唯一性时停止。
谢谢!!
【问题讨论】:
-
可以显示 condition1 的样子吗?这样的例子就可以了。
-
我做到了,谢谢!我现在遇到了“开关”功能的问题!
标签: matlab if-statement nested