poster
2019-12-10, 20:30
我正在尝试编写一个简单的函数,该函数接受两个输入x和y ,并将它们传递给其他三个简单函数,这些函数将它们相加,相乘和相除。然后,main函数应将结果显示为包含x , y和总数的字符串。
我认为我对输出参数有些不了解。无论如何,这是我的(可怜)代码:
function a=addxy(x,y) a=x+y; function b=mxy(x,y) b=x*y; function c=dxy(x,y) c=x/y; 主要功能是:
function [def]=answer(x,y) d=addxy(x,y); e=mxy(x,y); f=dxy(x,y); z=[def] 如何将x , y , d , e和f转换为字符串?我尝试了不同的矩阵和类似的东西:
['the sum of' x 'and' y 'is' d] 但没有显示任何变量。
另外两个问题:
为什么即使我没有要求z的长度,函数仍返回“ ans 3”?
如果有人可以为MATLAB脚本初学者推荐一本好书,我将不胜感激。
回答:
正如Peter (https://stackoverflow.com/questions/2204579/getting-variable-values-into-a-text-string-matlab/2204594#2204594)和Amro所 (https://stackoverflow.com/questions/2204579/getting-variable-values-into-a-text-string-matlab/2204631#2204631)说明的,您必须首先将数字值转换为格式化的字符串,以便显示它们或将它们与其他字符串连接在一起。您可以使用函数FPRINTF (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/fprintf.html) , SPRINTF (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/sprintf.html) , NUM2STR (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/num2str.html)和INT2STR进行此操作 (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/int2str.html) 。
关于将ans = 3作为输出,可能是因为您没有将answer的输出分配给变量。如果要获取所有输出值,则必须通过以下方式调用answer :
[out1,out2,out3] = answer(1,2); 这会将值d放入out1 ,将值e放入out2 ,将值f放入out3 。当您执行以下操作时:
answer(1,2) MATLAB将自动将第一个输出d (在这种情况下,其值为3)分配给默认工作空间变量ans (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/ans.html) 。
关于建议学习MATLAB的良好资源,您不应低估MATLAB文档的价值。我已经学会了自己使用它的大部分知识。您可以在线 (http://www.mathworks.com/access/helpdesk/help/techdoc/learn_matlab/bqr_2pl.html)访问它,也可以使用DOC (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/doc.html) , HELP (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/help.html)或HELPWIN (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/helpwin.html)函数在您的MATLAB副本中访问它。
更多&回答... (https://stackoverflow.com/questions/2204579)
我认为我对输出参数有些不了解。无论如何,这是我的(可怜)代码:
function a=addxy(x,y) a=x+y; function b=mxy(x,y) b=x*y; function c=dxy(x,y) c=x/y; 主要功能是:
function [def]=answer(x,y) d=addxy(x,y); e=mxy(x,y); f=dxy(x,y); z=[def] 如何将x , y , d , e和f转换为字符串?我尝试了不同的矩阵和类似的东西:
['the sum of' x 'and' y 'is' d] 但没有显示任何变量。
另外两个问题:
为什么即使我没有要求z的长度,函数仍返回“ ans 3”?
如果有人可以为MATLAB脚本初学者推荐一本好书,我将不胜感激。
回答:
正如Peter (https://stackoverflow.com/questions/2204579/getting-variable-values-into-a-text-string-matlab/2204594#2204594)和Amro所 (https://stackoverflow.com/questions/2204579/getting-variable-values-into-a-text-string-matlab/2204631#2204631)说明的,您必须首先将数字值转换为格式化的字符串,以便显示它们或将它们与其他字符串连接在一起。您可以使用函数FPRINTF (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/fprintf.html) , SPRINTF (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/sprintf.html) , NUM2STR (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/num2str.html)和INT2STR进行此操作 (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/int2str.html) 。
关于将ans = 3作为输出,可能是因为您没有将answer的输出分配给变量。如果要获取所有输出值,则必须通过以下方式调用answer :
[out1,out2,out3] = answer(1,2); 这会将值d放入out1 ,将值e放入out2 ,将值f放入out3 。当您执行以下操作时:
answer(1,2) MATLAB将自动将第一个输出d (在这种情况下,其值为3)分配给默认工作空间变量ans (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/ans.html) 。
关于建议学习MATLAB的良好资源,您不应低估MATLAB文档的价值。我已经学会了自己使用它的大部分知识。您可以在线 (http://www.mathworks.com/access/helpdesk/help/techdoc/learn_matlab/bqr_2pl.html)访问它,也可以使用DOC (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/doc.html) , HELP (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/help.html)或HELPWIN (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/helpwin.html)函数在您的MATLAB副本中访问它。
更多&回答... (https://stackoverflow.com/questions/2204579)