MATLAB中的数据处理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

读取双引号中的字符串,忽略双引号 字符串数组 读取字符,包括空格 字符串数组
例:有数据文本文件“data04.txt”,读取其中的内容
Leabharlann Baidu
>> [names, types, x, y,z, answer] = textread('d:/data/data04.txt','%s%s%f%d%f%s') 对于只包含纯数字数据的文本文件, textread 函数当然也能读取。 >> A = textread('d:/data/data02.txt') 与 textread 函数类似的函数还有 textscan,但功能更丰富,使 用更灵活,可参考相关帮助。 4、xlsread 函数 从 Excel 电子表格读取矩阵数据 常用格式: num = xlsread(filename) %读取 filename 文件中的数据,忽略标题 行或列的文本,而当不在标题行或列的单元格是空的,或者包含文本 时,xlsread 将在相应位置填上 NaN;
也可以经过适当的变量替换,将其他函数转化为多项式拟合。如
bx ln y ln a bx , 指数函数 y ae , 取对数: 令 ln y Y , 则 Y A bx
3、拟合工具箱 Matlab 中的拟合工具箱是一个更方便、 更直观进行曲线拟合的图形 界面,用 cftool 指令打开拟合工具箱。 界面中主要有 5 个按钮: ○“Data”按钮:可输出、察看和平滑数据; ○“Fitting”按钮:拟合数据、比较拟合曲线和数据集 ○“Exclude”按钮:可从拟合数据中排除特殊的数据点; ○“Ploting”按钮:显示拟合曲线和数据集; ○“Analysis”按钮:可以做内插法、外推法、微分或积分拟合。 SSE SSE 拟合效果主要看 2 个参数: (误差平方和)和 R-Square , 越接近 0,R-Square 越接近 1,拟合效果越好。 例:调用 Matlab 中自带的数据文件 census ,记录了美国 1790-1990 年间的人口,时间间隔为 10 年,找出人口与时间之间的关系。 >> load census >> cftool 三、多元线性回归 问题:设有因变量 y 和 p 个自变量 x1 , x2 , x p ,它们具有某种线性 关系
现测得 13 组数据,见表,要求建立热量与水泥化学成分之间的经验 回归关系式。 编号 1 2 3 4 x1 7 1 11 11 x2 26 29 56 31 x3 6 15 8 8 x4 60 52 20 47 y 78.5 74.3 104.3 87.6
5 6 7 8 9 10 11 12 13
>> x=[0.1 0.2 0.15 0 -0.2 0.3];y=[0.95 0.84 0.86 1.06 1.50 0.72]; >> p=polyfit(x,y,2);
>> xx=-0.2:0.01:0.3;yy=polyval(p,xx); >> plot(x,y,'or',xx,yy) 2、曲线拟合 当经验函数不是多项式, 而是其它类型的函数时, 可以用 lsqcurvefit 函数对拟合函数中的未知参数进行估计。 c=lsqcurvefit(fun,c0,xdata,ydata) fun 是经验拟合函数,含有未知参数,即具有形式 fun(c,x),c0 是未知参数的预估计值,(xdata,ydata)是已知实验数据。 例:已知数据表 t 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
将样本代入关系式,得 Y X ,其中
y1 x11 y x 2 21 Y ,X yp xn1 x1 p 1 x22 x2 p 2 , xn 2 xnp p x12
num = xlsread(filename, -1) %将在 Excel 窗口打开 filename 文件, 可以交互选择工作区中的数据文件; num = xlsread(filename, sheet) %选择工作表 sheet,默认为第一 个工作表; num = xlsread(filename, range) %指定工作表中的数据范围, 如’A4:B5’ num = xlsread(filename, sheet, range) 例:将电子表格 data01.xls 中的数据载入到 Matlab 工作区 >> xlsread('d:\data\data01')
>> xlsread('d:\data\data01',-1) >> xlsread('d:\data\data01','B3:E30') 5、使用输入向导 输入向导 (Import Wizard) 是把数据输入到 Matlab 最简单的方法。 无须知道被输入数据的格式,只需指定数据文件,向导会自动处理。 从菜单“File→Import Data”打开 Import Data 窗口,或者在命 令窗口中输入 >> uiimport 也可以打开数据输入向导。 第二部分 数据拟合 在实际工程应用和科学实践中,经常需要寻求两个(或多个)变 量间的关系,而实际却只能测得一些分散的数据点。针对这些分散的 数据点,运用某种拟合方法生成一条连续的曲线,这个过程成为曲线 拟合。曲线拟合可分为参数拟合和非参数拟合。参数拟合采用最小二 乘法,非参数拟合也称插值法。 1、多项式拟合 p=polyfit(x,y,n) 例:拟合下列数据 x y 0.1 0.95 0.2 0.84 0.15 0.86 0.0 1.06 -0.2 1.50 0.3 0.72 用 n 次多项式拟合向量数据(x,y)。
y 4 6.4 8 8.4 9.28 9.5 9.7 9.86 10 10.2 10.32 10.42 10.5 10.55 10.58 10.6 用适当的曲线进行数据拟合。 先画散点图,根据散点图确定拟合曲线为对数函数 y a b ln t >> t=1:16; >> y=[4 6.4 8 8.4 9.28 9.5 9.7 9.86 10 10.2 10.32 10.42 10.5 ... 10.55 10.58 10.6]; >> plot(t,y,'or') >> f=inline('c(1)+c(2)*log(t)','c','t') >> c=lsqcurvefit(f,[1,1],t,y) >> tt=1:0.1:16;yy=f(c,tt); >> hold on >> plot(tt,yy) %建立拟合函数 %求未知参数
>> dlmread('d:\data\data01.txt','-') %其他定界符 3、textread 函数 输入含有字母和数字的混合数据 常用格式: [A,B,C,...] = textread('filename','format') %按 format 指 定的格式读取 filename 文件中的全部内容 [A,B,C,...] = textread('filename','format',N) % 只 重 复 N 次 format 格式 按照 format 对应的格式,分别输出数据到变量 A、B、C…。 Format 可包含的参数: 格式 %d %u %f %s %q %c 作用 带符号整数 无符号整数 浮点值 用空格或分隔符分隔的字符串 输出 双精度数组 双精度数组 双精度数组 字符串数组
y 1 x1 2 x2 p x p
其中 1 , 2 , p 为待定系数, 据
为随机误差。现有容量为 n 观测数
yi , xij , i 1, 2, n, j 1, 2, p , 怎 样 确 定 待 定 系 数
1 , 2 , p ,并进行有效性检验?
四、使用输入函数 对于大量的数据,或者格式更加复杂的数据文件,以上方法就不 太方便,此时针对不同格式的数据文件,可以采用相应的输入函数导 入数据。 1、load 函数 装载 Matlab 格式的数据文件(.mat)和文本格式的定界符为空格的 矩形文件。 例:载入文件“data02.txt”中的数据 2、dlmread 函数 将带有定界字符的 ASCII 数字数据读入矩阵 常用格式: M=dlmread(‘filename’) 是默认定界符。 M=dlmread(‘filename’,delimiter),指定定界符。 M=dlmread(‘filename’,delimiter,R,C),从矩形数据的左上角 R 行、C 列的位置开始读入。 注意:矩形数据的开始位置是 0 行 0 列。 M=dlmread(‘filename’,delimiter,range) ,读取用 range 指定范围的数 据,range=[R1 C1 R2 C2],R1C1 是左上角的行列号,R2C2 是右下角 的行列号;range 也可以用如下表示法:range=’A1..B7’。 例:对于 data02.txt 中的数据 >> dlmread('d:\data\data02.txt') %读全部数据 %Matlab 从文件格式中推断定界符,逗号
>> dlmread('d:\data\data02.txt','',2,3)
%读取 3 行 4 列以后的数据, 两
个没有间隔的单引号表示用空格 (不限定重复次数) 作为定界符。 >> dlmread('d:\data\data02.txt','','c1..g4') %读取 C1..G4 范围内的数据
Matlab 求解: [b,bint,r,rint,stats]=regress(Y,X,alpha) b 为 其中 alpha 为显著性水平, 省略时为默认值 0.05;输出变量中, 的参数估计值,bint 为 b 的置信度为 1-alpha 的置信区间,r 为残差向 量 Y X ,也即 ,rint 为 的置信区间,stats 是包含 3 个元素的 F-统计量和 p 值。 检验统计量, 分别是 R-square: 相关系数 R 的平方, 回归效果:R-Square 越接近 1,p 值越接近 0(一般要求 p<0.05) 。 例:某种水泥在凝固时放出的热量(单位:卡/克)Y 与水泥中下列 4 种化学成分所占的百分比有关: x1: 3CaO Al2O3 ; x2: 3CaO SiO2 ; x3: 4CaO. Al2O3 Fe2O3 ; x4: 2CaO SiO2
Matlab 中的数据处理
Matlab 中的各种工具箱最主要是以矩阵或数组作为处理对象, 因 此首先必须将原始数据以矩阵形式加载到 Matlab 的工作空间,然后 对矩阵进行相关操作。 第一部分 数据输入 在 Matlab 中创建一个矩阵可以有如下几种途径: 一、在 Matlab 命令窗口直接输入矩阵 例如: >> A=[1 3 0;2 4 3;-3 4 9] 说明:矩阵或数组的标识符都是[ ],矩阵同一行之间的元素用空格或 逗号分隔,不同行之间用分号或回车符分隔。 二、利用 workspace(工作空间)创建或修改矩阵 在工作空间中新建一个空矩阵, 然后双击该矩阵名, 可以像 Office 中的 Excel 电子表格一样进行输入和编辑数据,也可以双击已经存在 于工作空间中的变量名,对其进行修改编辑。 例如:>> B=[]; 三、采用复制、粘贴的方式构造矩阵 对于存在于外部文件中的比较规范的数据(排列成矩阵形式) ,可 以先将数据块复制到剪贴板上,然后在 Matlab 中粘贴到相应变量。 举例:1、将 data01.xls 中的数据粘贴到 Matlab 工作空间中的变量 C 中。 2、 将 data02.txt 中的数据输入到 Matlab 工作空间中的变量 D 中。
相关文档
最新文档