如何在MATLAB中将变量值放入文本字​​符串?

jef*_*pan 12 string variables matlab text

我试图写一个简单的函数,它有两个输入端,xy,并将这些对其他三个简单的函数,加,乘,除他们.然后主函数应该将结果显示为包含字符串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)

但没有一个变量出现.

另外两个问题:

  • 为什么函数返回"ans 3"即使我没有要求长度z
  • 如果有人可以为初学者推荐一本好书来编写MATLAB脚本,我真的很感激.

Pet*_*ter 16

这里是你如何将数字转换为字符串,并将字符串连接到其他东西(这很奇怪):

>> ['the number is ' num2str(15) '.']
ans =
the number is 15.
Run Code Online (Sandbox Code Playgroud)


Amr*_*mro 8

您可以使用熟悉的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)


gno*_*ice 4

正如PeterAmro所示,您必须首先将数值转换为格式化字符串才能显示它们或将它们与其他字符串连接。您可以使用函数FPRINTFSPRINTFNUM2STRINT2STR来完成此操作。


关于获取ans = 3输出,可能是因为您没有将输出分配answer给变量。如果您想获取所有输出值,则必须按answer以下方式调用:

[out1,out2,out3] = answer(1,2);
Run Code Online (Sandbox Code Playgroud)

这会将值放入dout1e以及out2值。当您执行以下操作时:fout3

answer(1,2)
Run Code Online (Sandbox Code Playgroud)

MATLAB 会自动将第一个输出d(在本例中值为 3)分配给默认工作区变量ans


关于推荐学习 MATLAB 的良好资源,您不应低估 MATLAB 文档的价值。我通过使用它自己学到了大部分知识。您可以在线访问它,也可以在您的 MATLAB 副本中使用函数DOCHELPHELPWIN访问它。