第四章 Matlab数据处理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
教学质量、科研水平、人员素质、各种满意度、意识、能力等因素有关的
政治、社会、人文等领域的问题。按照国家的评价标准,评价因素一般分 为5个等级,如A,B,C,D,E等。对于这类问题,一般采用构造模糊隶属度函
数的量化方法进行。
3、读写Excel中的数据
xlswrite(filename,A,sheet,range) 将阵列A写入Excel文件filename中sheet表 格的range指示的单元格内。
[num,txt,raw] = xlsread(filename,sheet,range)从Excel文件filename中的
2.3 格式化输入输出函数 count=fprintf(fid,format,val1,val2,…) format是形如 %-12.5e的格式化字符
串,其中-表示左对齐,12表示数据宽度,.5表示精度(小数点后的位数) ,e表示科学计数法。
示例:
a=[10 20 30 40];fprintf(‘output=%4d %4d\n’,a); fprintf(‘%-8s\n’,’string’); fprintf(‘%d\n’,123); fprintf(‘%6d\n’,123); fprintf(‘%6.4d\n’,123);
line=fgetl(fid) 读取一行字符,不包括行结束符号,如果遇到文件末尾,
line的值设置为-1; line=fgets(fid),功能同fgetl,但是读取时包括行结束符
4.3.数据的标准化
1、数据类型的一致化处理
(1)极小型:对某个极小型数据指标x,
(2)中间型。对某个中间型指标x,则有:
4.2. Matlab中的输入输出函数
1、textread函数
以指定的格式读取ASCII文件。调用格式为: [a,b,c,…]=textread(filename,format,n),其中format是描述每一列数据类型 的字符串,书写格式同fprintf函数中的格式相同,n表示要读的行数,如果不 写n,则读取整个文件。 示例:
sheet表格中读取range单元格内的数据返回。 示例: values = {1, 2, 3 ; 4, 5, 'x' ; 7, 8, 9}; headers = {'First', 'Second', 'Third'}; xlswrite('myExample.xls', [headers; values]); A = xlsread('myExample.xls') subsetA = xlsread('myExample.xls', 1, 'B2:C3') columnB = xlsread('myExample.xls', 'B:B') [ndata, text, alldata] = xlsread('myExample.xls')
[z,count]=fscanf(fid,’%d’,Inf),得到z=10,count=1;因为类型不匹配而不继
续读取数据。 [z,count]=fscanf(fid,’%d.%d’,[1,inf]) 以小数点作为分割
[z,count]=fscanf(fid,’%c’)
[z,count]=fscanf(fid,’%s’)
(3)区间型。对某个区间型指标x,则有:
2、数据指标的无量纲化处理 实际的数据指标中,往往存在着量纲不同的情况,会出现大数吃小数的错 误,导致结果不合理。常用的无量纲处理化方法有标准差法,极值差法和 功效系数法等。
其中,c,d为确定的常数,c表示平移量,d表示旋转量,表示放大或者 缩小的倍数。
3、模糊指标的量化处理方法 在实际中,许多问题都涉及到定性或者模糊指标的定量处理问题,如
[array count]=fscanf(fid,format,size) array返回接收到的数据,size表示
从文件中读取的数据个数,可以去n,Inf和[n,m]。
示例:
假设文件test.dat中有如下两行数据: 10.00 20.00
30.00 40.00
[z,count]=fscanf(fid,’%f’),得到z是一个列向量,count=4; [z,count]=fscanf(fid,’%f’,[2 2]),得到z是[10 30;20 40],count=4
2、Matlab中的文件处理函数
2.1 文件的打开与关闭函数 [fid,message]=fopen(filename,permission,format),fid返回打开文件的
文件ID,如果打开成功,message返回空串。permission是打开权限,可
以是’r’ ‘r+’ ‘w’ ’w+’ ‘a’ ‘a+’ ‘W’ ‘A’,分别代表了对文件的读写追加等操作,可 以和文本文件(t)或者二进制文件(b)组合使用,如’rt’ ‘rt+’ ‘rb’等,format对应
文件中数据的显示格式,可以是n,l,a,b,s等。
status=fclose(fid) 关闭文件
2.2 二进制文件读写函数 count=fwrite(fid,array,precision),array是要写入的矩阵,precision对
应精度,有’char’,’schar’,’int8’,’int16’,’uint8’,’float32’等。 [array,count]=fread(fid,size,precision)从打开的文件fid读取二进制数据, size指示读取的数据个数,如果为n表示读n个数据,返回的array是一个列 向量,如果为inf表示读取全部数据,array是一个包含全部数据的列向量。 如果为[n m]表示读一个n*m个数据,形成一个array。 示例:见备注
主要内容
4.1. 数据文件读写
4.2. Matlab中的输入输出函数
4.3. 数据的标准化
4.1. 数据文件读写
1、将工作区变量保存到文本文件中
save filename var1 var2 var3… -mat 默认保存的文件扩展名为.mat,如 果保存的数据需要跨平台处理,需要采用如下格式: save filename.dat var1 var2 … -ascii 另外: save filename var1 var2 … -append 附加到已经存在的Mat文件中 dlmwrite(‘data3.txt’,b),可以将工作区变量保存到纯文本文件中。
Fra Baidu bibliotek
假设文件test.dat中的数据如下:
James Jones O+ 3.51 22 Yes Sally Smith A+ 3.28 23 No
读取时:[first,last,blood,gpa,age,answer]=textread(‘test.dat’,’%s %s %s
%f %d %s’)
如果需要忽略某些数据,只读取一部分,可以如下调用: [first,last, gpa]=textread(‘test.dat’,’%s %s %*s %f %*d %*s’)
2、将文本文件中的数据导入工作区
load filename a=load(‘filename.txt');
M = dlmread(filename, delimiter, R, C) 读取文本文件
示例: M = gallery('integerdata', 100, [5 8], 0); dlmwrite('myfile.txt', M, 'delimiter', '\t') dlmread('myfile.txt') dlmread('myfile.txt', '\t', 2, 3) dlmread('myfile.txt', '\t', 'C1..G4')
fprintf(‘%-6.4d\n’,123); fprintf(‘%+6.4d\n’,123);
fprintf(‘%f\n’,123.4); fprintf(‘%8.2f\n’,123.4); fprintf(‘%4.2d\n’,123.4); fprintf(‘%10.2e\n’,123); fprintf(‘%10.2E\n’,123);