我需要在MATLAB中编写一个函数,假设两个人的出生日期为 ( y1,m1,d1,y2,m2,d2 )
(年,月,日)将比较它们,如果第一个人年龄较大则返回1,如果第一个人年龄较小则返回-1 0如果他们有相同的年龄 . 我做了以下事情:
function classify( y1,m1,d1,y2,m2,d2 )
if y1 > y2
return -1;
elseif y1 < y2
return 1;
elseif y1 == y2
if m1 > m2
return -1;
elseif m1 < m2
return 1;
elseif m1 == m2
if d1 > d2
return -1;
elseif d1 < d2
return 1;
elseif d1 == d2
return 0;
end
end
end
end
但它给出了错误 . 如何在不必声明变量的情况下在MATLAB中返回值?我只需要返回1,0,-1取决于结果,似乎 return 1;
不能正常工作 .
4 回答
要使函数返回值,需要在函数定义行中声明相应的变量 .
return
函数只是过早地退出函数,它不会自动返回值 .与您如何输入多个值类似,您可以让它返回多个值
称之为
现在,针对您比较两个日期的具体问题:我强烈建议您使用
datenum
:在Matlab中,
return
is used将控制返回到调用函数而不是返回值 . 要从函数中获取值,您应该执行以下操作:return
在您想要中断功能时非常有用 . 但是,与goto
类似,它可能会使您的代码可读性降低,因此容易出错 .顺便说一句,通过比较两个日期,你可以做的更短:
你可以通过避免if子句使它更短:
Matlab函数看起来像这样:
older
变量是您的返回变量 - 返回函数内的最后一个赋值 .首先classify是在MATLAB中实现的,使用相同的名称创建自己的函数并不是一个好主意 .
您尚未在函数定义中定义输出,因此只需在单词函数前添加
[A] =
return不能在你的情况下使用..用
A =
替换回报你还需要在if
语句开始之前声明并定义A.PS . 我使用
A
作为示例,但只要以字母开头且长度少于63个字符,就可以使用variable的任何名称 .