jef*_*pan 12 string variables matlab text
我试图写一个简单的函数,它有两个输入端,x
和y
,并将这些对其他三个简单的函数,加,乘,除他们.然后主函数应该将结果显示为包含字符串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;
Run Code Online (Sandbox Code Playgroud)
主要功能是:
function [d e f]=answer(x,y)
d=addxy(x,y);
e=mxy(x,y);
f=dxy(x,y);
z=[d e f]
Run Code Online (Sandbox Code Playgroud)
我如何获得的值x
,y
,d
,e
,和f
成一个字符串?我尝试了不同的矩阵和类似的东西:
['the sum of' x 'and' y 'is' d]
Run Code Online (Sandbox Code Playgroud)
但没有一个变量出现.
另外两个问题:
z
?Pet*_*ter 16
这里是你如何将数字转换为字符串,并将字符串连接到其他东西(这很奇怪):
>> ['the number is ' num2str(15) '.']
ans =
the number is 15.
Run Code Online (Sandbox Code Playgroud)
您可以使用熟悉的C语法使用fprintf/sprintf.也许是这样的:
fprintf('x = %d, y = %d \n x+y=%d \n x*y=%d \n x/y=%f\n', x,y,d,e,f)
Run Code Online (Sandbox Code Playgroud)
阅读您的评论,这是您使用主程序中的功能的方式:
x = 2;
y = 2;
[d e f] = answer(x,y);
fprintf('%d + %d = %d\n', x,y,d)
fprintf('%d * %d = %d\n', x,y,e)
fprintf('%d / %d = %f\n', x,y,f)
Run Code Online (Sandbox Code Playgroud)
同样对于answer()函数,您可以将输出值分配给向量而不是三个不同的变量:
function result=answer(x,y)
result(1)=addxy(x,y);
result(2)=mxy(x,y);
result(3)=dxy(x,y);
Run Code Online (Sandbox Code Playgroud)
并简称为:
out = answer(x,y);
Run Code Online (Sandbox Code Playgroud)
正如Peter和Amro所示,您必须首先将数值转换为格式化字符串才能显示它们或将它们与其他字符串连接。您可以使用函数FPRINTF、SPRINTF、NUM2STR和INT2STR来完成此操作。
关于获取ans = 3
输出,可能是因为您没有将输出分配answer
给变量。如果您想获取所有输出值,则必须按answer
以下方式调用:
[out1,out2,out3] = answer(1,2);
Run Code Online (Sandbox Code Playgroud)
这会将值放入d
、out1
值e
以及out2
值。当您执行以下操作时:f
out3
answer(1,2)
Run Code Online (Sandbox Code Playgroud)
MATLAB 会自动将第一个输出d
(在本例中值为 3)分配给默认工作区变量ans
。
关于推荐学习 MATLAB 的良好资源,您不应低估 MATLAB 文档的价值。我通过使用它自己学到了大部分知识。您可以在线访问它,也可以在您的 MATLAB 副本中使用函数DOC、HELP或HELPWIN访问它。
归档时间: |
|
查看次数: |
132675 次 |
最近记录: |