
matlab常见的输出形式主要有三种:
1.直接输出到命令行
MATLAB允许在脚本(M文件)或者命令行上直接输入变量名即可输出,这种方法应用起来较为简单方便,适合测试时使用。但一般输出时时按照系统默认格式进行输出,若要调整需要在程序前通过 format 修改命令行输出格式,例如 format long 设置命令行输出格式为固定十进制长格式,同理可以设置为 short 短格式,更多的数值格式见下表所示
数值格式
这些样式可控制数值变量的输出显示格式。
| 结果 | 示例 |
---|---|---|
| 固定十进制短格式,小数点后包含 4 位数。 | 3.1416 |
| 长固定小数格式, | 3.141592653589793 |
| 短科学记数法,小数点后包含 4 位数。 | 3.1416e+00 |
| 长科学记数法, | 3.141592653589793e+00 |
| 短固定小数格式或科学记数法(取更紧凑的一个),总共 5 位。 | 3.1416 |
| 长固定小数格式或科学记数法(取更紧凑的一个),对于 | 3.14159265358979 |
| 短工程记数法,小数点后包含 4 位数,指数为 3 的倍数。 | 3.1416e+000 |
| 长工程记数法,包含 15 位有效位数,指数为 3 的倍数。 | 3.14159265358979e+000 |
| 正/负格式,对正、负和零元素分别显示 | + |
| 货币格式,小数点后包含 2 位数。 | 3.14 |
| 二进制双精度数字的十六进制表示形式。 | 400921fb54442d18 |
| 小整数的比率。 | 355/113 |
除此,也可以设置矩阵输出时的行距格式:
| 结果 | 示例 |
---|---|---|
| 隐藏过多的空白行以便在一个屏幕上显示更多输出。 | theta = pi/2 |
| 添加空白行以使输出更易于阅读。 | theta = pi/2 |
2、fprintf函数输出
fprintf函数是MATLAB函数中较为常见的一种(详见fprintf函数),因为它可以设置输出格式,较为灵活全面。最为常见的一种形式为: fprintf('%s is a boy',boyname) ,其中 boyname 表示一个存储字符串的变量名,同理这种形式可以输出十进制数(%d)、八进制数(%o)、定点记数法的浮点数(%f)以及指数记数法的浮点数(%e),单个字符(%c)和字符串(%s)。
如是需要控制输出的长度,可以在百分号后加上数字,例如 %8s 输出长度为八(若实际字符串长度超过八会输出字符串原身,不会截断),在命令行上至少保持8个占位,不够用空格来补,而 %4.8f 则会输出4位整数加小数点加8位小数的数字格式,与字符串不同的时,整数不够用空格补,小数不够用 0 来补。
前面所提的案例输出格式遵循右对齐的格式,若想变成左对齐则在百分号后数字或格式前加一个负号即可,例如 %-8s 。除此,我们还可以通过一些特殊的控制字符来维持输出格式的美观,例如 \t (水平)制表符,\n 换行符,\v 垂直制表符。
除此,fprintf函数还可以将数据输出到文件中存储起来,在MATLAB脚本中操作,格式案例如下:
x = 0:.1:1; A = [x; exp(x)]; fileID = fopen('exp.txt','w'); fprintf(fileID,'%6s %12s\n','x','exp(x)'); fprintf(fileID,'%6.2f %12.8f\n',A); fclose(fileID);
在输出前首先需要打开文件(fopen),输出结束后需要关闭文件(fclose),如上所示。其中,fopen函数里的是文件名以及标识符,标识符类别有以下8种,若是要创建新文件则是 w ,若是在原有文件里补充则是 a ,一般用到的就这两种。
| 打开要读取的文件。 |
| 打开或创建要写入的新文件。放弃现有内容(如果有)。 |
| 打开或创建要写入的新文件。追加数据到文件末尾。 |
| 打开要读写的文件。 |
| 打开或创建要读写的新文件。放弃现有内容(如果有)。 |
| 打开或创建要读写的新文件。追加数据到文件末尾。 |
| 打开文件以追加(但不自动刷新)当前输出缓冲区。 |
| 打开文件以写入(但不自动刷新)当前输出缓冲区。 |
fclose 关闭文件,括号里面的fileID是文件标识符,即代表打开的文件,无特殊情况该语句也可以用 fclose('all') 关闭所有文件代替。而fprintf与前面输出到命令行的格式大致相似,不过在最前面加上了一个fileID~文件标识符而已。
3.disp
disp函数是直接输出,打印变量值或者打印字符串,形如 disp(x)和disp('x')表达的意思是不同的,前者是输出 x 的值,可以是字符串、整数、矩阵等等,而后者则是直接打印字符串 x ,打印完会直接换行,不像fprintf函数需要输入 \n 换行。同时,需要注意的是 disp 若是要在一行i打印字符串和变量值不能直接写成这种形式: disp('a is',a_value),这样会出现输入参数过多的错误(而在C#语言中使用$可以做到类似操作),但是可以写成类如以下形式来输出:
name = 'Alice'; age = 12; X = [name,' will be ',num2str(age),' this year.']; disp(X)
这样会在一行里输出 :Alice will be 12 this year.
更多web开发知识,请查阅 HTML中文网 !!