作者moonskyex (蓝调迷思)
看板MATLAB
标题[问题] if 里面加try?
时间Wed Oct 16 15:57:26 2013
我现在有一支程式
for i = 1:m
for j = 1:n
if M[i,j-1] == 1 || M[i-1,j] == 1
u(i,j) = M(i,j-1) + M(i-1,j)
else if M[i-1,j-1] == 1
u(i,j) = M(i-1,j-1)
else
u(i,j) = M(i,j)
end
end
end
但是如果i,j等於1的话i-1跟j-1会underflow。
今天我想要underflow的时候就把该bool值设为0
例如if M[i,j-1] == 1 or M[i-1,j] == 1
j-1 underflow 所以M[i,j-1] == 1判断为false
i-1没有underflow 所以M[i-1,j] == 1 正常判断,假设为true
所以这段if的判断式就是 false || true = true
直接在if里面加try catch试了好久都无法执行,说是错误的用法
当然也可以用if去判断有没有underflow 但是程式会变的很难看
if j-1 < 1 && i-1 < 1
u(i,j) = M(i,j)
else if j-1 < 1
if M(i-1,j) == 1
u(i,j) = M(i-1,j)
end
else if i-1 < 1
if M(i,j-1) == 1
u(i,j) = M(i,j-1)
end
else if M[i,j-1] == 1 || M[i-1,j] == 1
u(i,j) = M(i,j-1) + M(i-1,j)
不仅程式变的难看,可读性也降低许多。
因此才想说如果可以用try catch把underflow的值设为false就可以简化很多了!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 134.208.3.115
※ 编辑: moonskyex 来自: 134.208.3.115 (10/16 15:59)