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

时间:2010-02-05 01:52:52

标签: string matlab text variables

我正在尝试编写一个带有两个输入xy的简单函数,并将这些函数传递给其他三个简单函数,这些函数可以对它们进行相加,乘法和除法。然后,主要功能应将结果显示为包含xy和总计的字符串。

我认为我不了解输出参数。无论如何,这是我的(可怜的)代码:

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 [d e f]=answer(x,y)
d=addxy(x,y);
e=mxy(x,y);
f=dxy(x,y);
z=[d e f]

如何将xydef的值添加到字符串中?我尝试了不同的矩阵和类似的东西:

['the sum of' x 'and' y 'is' d]

但没有任何变量出现。

另外两个问题:

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

5 个答案:

答案 0 :(得分:15)

以下是如何将数字转换为字符串,以及将字符串连接到其他内容(这很奇怪):

>> ['the number is ' num2str(15) '.']
ans =
the number is 15.

答案 1 :(得分: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)

阅读你的评论,这就是你如何使用主程序中的函数:

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)

同样对于 answer()函数,您可以将输出值分配给向量而不是三个不同的变量:

function result=answer(x,y)
result(1)=addxy(x,y);
result(2)=mxy(x,y);
result(3)=dxy(x,y);

并将其简称为:

out = answer(x,y);

答案 2 :(得分:4)

PeterAmro所示,您必须先将数值转换为格式化字符串,以便显示它们或将它们与其他字符串连接起来。您可以使用FPRINTFSPRINTFNUM2STRINT2STR功能执行此操作。


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

[out1,out2,out3] = answer(1,2);

这会将值d放在out1中,将值e放在out2中,将值f放在out3中。执行以下操作时:

answer(1,2)

MATLAB将自动将第一个输出d(在这种情况下值为3)分配给默认工作区变量ans


关于建议学习MATLAB的良好资源,你不应该低估MATLAB文档的价值。我自己学习了大部分知识。您可以使用onlineDOCHELP函数访问它HELPWIN或在您的MATLAB副本中。

答案 3 :(得分:3)

我刚刚意识到为什么我遇到这么多麻烦 - 在MATLAB中你不能使用方括号将不同长度的字符串存储为数组。使用方括号将不同长度的字符串连接成一个字符数组。

    >> a=['matlab','is','fun']

a =

matlabisfun

>> size(a)

ans =

     1    11

在字符数组中,字符串中的每个字符都算作一个元素,这就解释了为什么a的大小为1X11。

要将不同长度的字符串存储为数组元素,您需要使用花括号来保存为单元格数组。在单元格数组中,无论长度如何,每个字符串都被视为一个单独的元素。

>> a={'matlab','is','fun'}

a = 

    'matlab'    'is'    'fun'

>> size(a)

ans =

     1     3

答案 4 :(得分:0)

我正在寻找你想要的东西,但是想把它放回变量中。

所以这就是我做的事情

variable = ['hello this is x' x ', this is now y' y ', finally this is d:' d]

基本上

variable = [str1 str2 str3 str4 str5 str6]