我有这个函数接受图像的行/列坐标并返回相邻像素变化的方向。
function [d] = p_directions(row, col, img)
if img(row, col+1) == 2
if img(row, col) == 3
d = 'A+';
elseif img(row, col) == 1
d = 'B+';
elseif img(row, col) == 2
d = NaN;
end
end
if img(row, col) == 2
if img(row, col+1) == 3
d = 'A-';
elseif img(row, col+1) == 1
d = 'B-';
end
end
end
函数调用:
[row, col] = find_row_col(A);
[d] = p_directions(row, col, img)
错误讯息:
Error in p_directions (line 15)
if img(row, col + 1) == 2
Output argument "d" (and maybe others) not assigned during call to "p_directions".
我想要相信错误来自我的脚本的第一行('第15行'),在这种情况下变量'd'甚至不计算。我是编程新手,我不知道我的函数脚本的第一行究竟出了什么问题?请对此有任何帮助,建议或建议吗?提前谢谢。
答案 0 :(得分:2)
这是错误说明一切的一种情况......
您需要为d
指定默认值。通常,您会选择一个值,以便在返回时您知道出现了问题。因此,在函数调用之后,您可以考虑使用类似
d = -1
或者你可以添加else语句......
if
...
else
d = -1
问题是,如果您指定的任一点的if
值为2,您将只会进入img
语句。如果它没有,则永远不会分配返回值。
答案 1 :(得分:1)
问题是,如果任何嵌套if条件为真,则函数p_directions
将仅为d
赋值。如果它们都不为真,则您尚未指定要返回的“默认”值。
您的两个条件分别以if img(row, col+1) == 2
和if img(row, col) == 2
开头。如果它们都不是真的怎么办,因为img(row,col)
和img(row,col+1)
都不是2?然后d
将没有值,Matlab不知道返回什么。因此错误。