使用fprintf()和disp()函数将消息显示到MATLAB中的命令窗口?

时间:2018-12-10 23:22:06

标签: matlab formatting newline

当前在一个项目中,我必须接受多个用户输入。因为我的输入提示必须向用户概述有关他们应如何输入值的特定格式,所以这会使每个输入提示都相当冗长,因此我认为以换行符分隔每个输入提示是适当的,这样很容易区分它们/看起来不错。最后一个提示是两行长,因此如果它们混杂在一起而不是被换行符隔开,则很难将其与其余的区别开来。

我研究了fprintf()disp()的用法,发现fprintf()的行为有些棘手,有时不包含fflushf()之类的东西就无法工作,而且,我已经读到fprintf()实际上是用于将数据写入文本文件的(至少是从MathWorks页面开始的),将其用于其他目的是我绝对可以看到我的教授扣除的几点如果确实有更简单的方法(我们对脚本效率的评分很严格)。

disp()命令似乎更符合我的要求,但是我找不到能够支持\n之类的格式运算符的东西。目前,我已经用\n代替了disp(' ')的用法,但是这肯定会导致扣分。

TL; DR 是否有更有效的方法来创建换行符而不使用fprintf('text\n')?我将附加一部分脚本供您查看:

disp('i) For the following, assume Cart 1 is on the left and Cart 3 is on the right.');
disp('ii) Assume positive velocities move to the right, while negative velocities move to the left.');
prompt = '\nEnter an array of three cart masses (kg) in the form ''[M1 M2 M3]'': ';
m = input(prompt);
prompt = '\nEnter an array of three initial cart velocities (m/s) in the form ''[V1 V2 V3]'': ';
v0 = input(prompt);
disp(' '); 
disp('Because the initial position of the three carts is not specified,');
prompt = 'please provide which two carts will collide first in the form ''[CartA CartB]'': ';
col_0 = input(prompt);

2 个答案:

答案 0 :(得分:4)

您可以使用disp函数使newline显示新行。将多个字符串放在方括号中将它们连接起来。

disp(['Line 1' newline 'Line 2'])

您提到使用fprintf,但您发现这是用于写入文件的。如果需要,可以使用sprintf函数显示相同格式的字符串。

disp(sprintf('Line 1 \nLine 2'))

答案 1 :(得分:1)

除了Matt的解决方案之外,我还想出了另一种方法来解决我的问题,并希望以后将其发布给任何有相同问题的人。

经过一些实验和思考,我认为最有效的方法(理想情况下)根本不涉及使用fprintf()\n,而从理论上讲,实际上涉及对输入提示自己出现在多行上(而不是在每个提示的最后一行之前添加“虚拟”行,以使其看起来好像是提示本身的一部分)。我一直以来都知道,只要换行符\n就可以使我在句子的中间换行,并且从理论上讲这是可行的。但是由于最后一个提示是两行,所以只需在中间插入disp()到一行,就会使该行代码很长,这是我在第一行中试图避免的地点。

我意识到我最初的问题没有明确提到连接两个(或多个)字符串以形成一个输入提示,该提示出现在控制台中的多行中,但这实际上是我在写这篇文章的地方,对此表示不清楚。

无论如何,我无需使用fprint()disp()来解决此问题,方法是将提示声明为字符串数组,而不是使用上面指定的提示的前几行将其声明为单个字符串在您最初在问题中提供的代码中可以看到fprintf()和/或disp(' '); disp('Because the initial position of the three carts is not specified,'); prompt = 'please provide which two carts will collide first in the form ''[CartA CartB]'': '; col_0 = input(prompt); 。这是之前的样子:

prompt = ['\nBecause the initial position of the three carts is not specified, please',...
    '\nprovide which two carts will collide first in the form ''[CartA CartB]'': '];
col_0 = input(prompt);

与现在的样子:

\n

简而言之,您可以通过将整个提示的一部分声明为字符串数组并在您认为合适的地方插入{{1}}来串联整个提示。