String 我试图在matlab中显示变量名及其值的num2str表示

String 我试图在matlab中显示变量名及其值的num2str表示,string,matlab,disp,String,Matlab,Disp,我试图产生以下结果:使用disp和num2str命令,x和y的新值分别为-4和7。我试着做这个disp(“x和y的新值分别是num2str(x)和num2str(y)),但它给出了num2str而不是合适的值。我该怎么办?试试: disp(['The new values of x and y are ', num2str(x), ' and ', num2str(y), ', respectively']); 实际上,您也可以省略逗号,但它们使代码更具可读性 顺便说一下,我在这里所做的是将5

我试图产生以下结果:使用disp和num2str命令,x和y的新值分别为-4和7。我试着做这个disp(“x和y的新值分别是num2str(x)和num2str(y)),但它给出了num2str而不是合适的值。我该怎么办?

试试:

disp(['The new values of x and y are ', num2str(x), ' and ', num2str(y), ', respectively']);
实际上,您也可以省略逗号,但它们使代码更具可读性

顺便说一下,我在这里所做的是将5个字符串连接在一起形成一个字符串,然后将单个字符串输入到
disp
函数中。请注意,我基本上使用与数字矩阵相同的语法连接字符串,即
[x,y,z]
。我之所以可以这样做,是因为matlab将字符串作为数字行向量存储在内部,每个字符表示一个元素。因此,上述操作实质上是水平连接5个数字行向量


还有一点:您的代码失败了,因为matlab将num2str(x)视为字符串而不是函数。毕竟,您可能合法地希望打印“num2str(x)”,而不是使用函数调用对此进行求值。在我的代码中,第一个、第三个和第五个字符串被定义为字符串,而第二个和第四个是计算为字符串的函数

如科林所述,一个选项是使用将数字转换为字符串,手动连接所有字符串,并将最终结果输入到。不幸的是,它会变得非常尴尬和乏味,尤其是当你有很多数字要打印的时候

相反,您可以利用的功能,这在MATLAB中与C编程语言的功能非常相似。这会产生更短、更优雅的语句,例如:

disp(sprintf('The new values of x and y are %d and %d respectively', x, y))
可以使用格式说明符控制变量的显示方式。例如,如果
x
不一定是整数,您可以使用
%.4f
,而不是
%d


编辑:正如Jonas指出的,您还可以使用而不是
disp(sprintf(…)

+1非常整洁。从现在起,我可能会开始这样做:-)@ColinTBowers:您也可以使用
fprintf(…)
而不是
disp(sprintf(…)
。少打字:)@Jonas+1,我也在把它写进我的答案中。