cua*_*ana 4 string matlab disp
我试图产生以下内容:使用disp和num2str命令,x和y的新值分别为-4和7.我试图做这个disp('x和y的新值分别是num2str(x)和num2str(y)'),但它给出了num2str而不是相应的值.我该怎么办?
就像科林所提到的,一种选择是将数字转换为字符串num2str,手动连接所有字符串并将最终结果输入disp.不幸的是,它可能变得非常笨拙和乏味,特别是当你有大量的数字要打印时.
相反,您可以利用sprintfMATLAB中与C编程语言相似的功能.这会产生更短,更优雅的陈述,例如:
disp(sprintf('The new values of x and y are %d and %d respectively', x, y))
Run Code Online (Sandbox Code Playgroud)
您可以使用格式说明符控制变量的显示方式.例如,如果x不一定是整数,则可以使用%.4f,例如,而不是%d.
编辑:像乔纳斯指出的那样,你也可以用fprintf(...)而不是disp(sprintf(...)).
尝试:
disp(['The new values of x and y are ', num2str(x), ' and ', num2str(y), ', respectively']);
Run Code Online (Sandbox Code Playgroud)
你实际上也可以省略逗号,但恕我直言,他们使代码更具可读性.
顺便说一句,我在这里完成的是将5个字符串连接在一起形成一个字符串,然后将该单个字符串输入disp函数.请注意,我基本上使用与数字矩阵相同的语法连接字符串,即[x, y, z].我能做到这一点的原因是matlab在内部存储字符串作为数字行向量,每个字符表示一个元素.因此,上述操作基本上是水平连接5个数字行向量!
还有一点:您的代码失败,因为matlab将您的num2str(x)视为字符串而不是函数.毕竟,您可能合法地想要打印"num2str(x)",而不是使用函数调用来评估它.在我的代码中,第一个,第三个和第五个字符串被定义为字符串,而第二个和第四个字符串是评估为字符串的函数.