第3章 数据的输入与输出

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 如想按列显示数值,则程序为:

相关文档
最新文档