第3章 数据的输入与输出
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第3章数据的输入与输出
本章只介绍MATLAB最常用的输入与输出命令。
3.1 用INPUT函数输入数据
数据可以按程序或函数限定的格式由用户用input输入。此外,input还可以在MATLAB命令窗口中显示以提示用户输入什么。然而,数据的具体形式依赖于数据是标量、向量还是矩阵,以及它们是数值还是字符串。举例说明一下这几种情况。
3.1.1 标量的输入
输入一个数值时,可以采用:
InputData=input(‘Enter the temperature in degrees C:’);
在MATLAB命令窗口中显示:
Enter the temperature in degrees C: 121.7
其中数值121.7由用户输入。表达式末尾的分号可禁止系统对于输入数据的回显。
在同一表达式中可以执行用户输入数据的计算。例如:
InputData= input(‘Enter the starting angle in degrees:’)*pi/180;结果显示:
Enter the starting angle in degrees:45
其中数值45由用户输入。然而,InputData的数值为 0.7854(45π/180)。
又如,考虑温度从摄氏度向华氏度的变换,输入:
InputData=1.88*input(‘Enter the temperature in degrees C:’)+32;结果显示:
Enter the temperature in degrees C:100
其中数值100由用户输入。而InputData的数值为212。(220)
如希望将提示信息显示在几行中,则可以在单引号内的适当位置上加入定义符“\ n”,即:
InputData= input(‘Enter the starting angle\ n in degrees:’)*pi/180;结果显示:
Enter the starting angle
in degrees:
3.1.2 字符串的输入
输入一个字符串时,可以采用:
InputData=input(‘Enter file name,including its extension:’,’s’)*pi/180;结果显示:
Enter file name,including its extension:DataSet3.txt
其中字符串DataSet3.txt由用户输入。注意这里不需要加单引号,这是由input 函数中第二项参数’s’决定的。
3.1.3 向量的输入
输入由数值构成的向量时,可以采用:
InputData=input(‘Enter the temperature in degrees C:’);
在MATLAB命令窗口显示:
Enter the temperature in degrees C:[120,141,169,201]
其中向量[120,141,169,201]由用户输入。这里方括号是必须的。若要输入列向量,则用户应输入[120,141,169,201]'。
3.1.4 矩阵的输入
输入由数值构成的矩阵时,可以采用:
InputData=input(‘Enter the temperature in degrees C \n at levels 1 and 2:’);在MATLAB命令窗口显示:
Enter the temperature in degrees C
at levels 1 and 2:[67 35 91;44 51 103]
其中数组[67 35 91;44 51 103]由用户输入。
3.2 字符串(文字)和注释的输出
在MATLAB中允许矩阵的创建、存贮和操作,这些矩阵可以是字母、数字和一些特殊字符任意组合而成的字符串。字符串的定义是把字符串放在单引号内,除此以外,其他与向量和矩阵的定义类似。
下面介绍几个最常用的几个函数。
1、num2str----将数值转换为字符串。
2、disp----在MATLAB命令窗口显示字符串。例如:
num=12.567;
z=num2str(num);
disp(['产品重量 =','z','kg'])
或者,更为紧凑的形式是:
num=12.567;
disp(['产品重量 =',num2str(num),'kg'])
执行后,显示在MATLAB命令窗口中的结果为:
产品重量 =12.567 kg
若num是重量的向量,那么
num=[12.567,3.458,9.111];
disp(['产品重量 =',num2str(num),'kg'])
显示:
产品重量 =12.567 3.458 9.111 kg
然而,可以使用下面的程序建立与每个mun值一致的注释:
num=[12.567,3.458,9.111];
disp([repmat('产品重量 ='n,1),num2str(num'),repmat('kg',n,1)]) 执行后显示:
产品重量 =12.567 kg
产品重量 =3.458 kg
产品重量 =9.111 kg
若不需要显示num的注释,则
num=[12.567,3.458,9.111];
disp(num)
在MATLAB命令窗口中显示:
12.5670
3.4580
9.1110
MATLAB允许用户指定数值转换为字符串时的位数:(不懂)
num2str(a,N)
其中a是要转换的数值,N是数值的位数。若指定的位数小于小数点左边的位数,则MATLAB将数值转换为指数描述形式,且有效数字等于N。
考虑下面的例子,a=100 =3141.592653589,则:
num2str(a,1) →3e+003 num2str(a,3) →3.14e+003
num2str(a,4) →3142 num2str(a,5) →3141.5
num2str(a,8) →3141.5927
3、fprintf ----可以在MATLAB窗口中显示有格式的数据,他相对于函数disp的优势在于他能够控制数值得显示格式。函数fprintf的语法结构为: fprintf(1,'% ….',variables)
其中第一个参数为‘1’,表示在MATLAB命令窗口输出,而引号内的参数是变量格式的附加说明。格式说明的顺序对应着变量的顺序。符号%在每个具体格式说明之前。通过下面的向量可说明fprintf的几种不同的用法。
num=[12,-14,3.458,0.11167];
fprintf(1,'%5.3f',num)
结果为:
12.000 -14.000 3.458 0.112 >>
注意num(1)和num(2)的值加了3个0,而num(4)在小数点后则近似取了3位数。另外,>>表明数据已经在一行中显示出来,可以执行其他的MATLAB表达式。若想得到下一行,按Enter键即可。如果要把这4个数值作为一列来显示,可以采用定义符“\ n”,如下所示:
num=[12,-14,3.458,0.11167];fprintf(1,'%5.3f \ n',num)结果为:(为什么得到的是一行而不是一列?)
12.000
-14.000
3.458
0.112
若想得到与给定精度相同的4个数值,则:(%和f之间的数字是什么意思?) num=[12,-14,3.458,0.11167] ;
fprintf(1,'%2.0f %2.0f %5.3f %5.5f',num)
其中每个f和%之间都有两个空格,这样数值就被两个空格分开了。执行后产生: 12 -14 3.458 0.11167 >>
可以用如下方法对每一个数值进行注释:
num=[12,-14,3.458,0.11167];
fprintf(1,'weight = %2.0f kg pressure = %2.0f Pa time = %5.3f s … length = %5.3f m \n',num)
结果为:
weight = 12 kg pressure = -14 Pa time = 3.458 m length = 0.11167 m 如想按列显示数值,则程序为: