收藏 分享(赏)

数学建模竞赛常用方法之数据处理.ppt

上传人:精品资料 文档编号:10271455 上传时间:2019-10-27 格式:PPT 页数:127 大小:1.32MB
下载 相关 举报
数学建模竞赛常用方法之数据处理.ppt_第1页
第1页 / 共127页
数学建模竞赛常用方法之数据处理.ppt_第2页
第2页 / 共127页
数学建模竞赛常用方法之数据处理.ppt_第3页
第3页 / 共127页
数学建模竞赛常用方法之数据处理.ppt_第4页
第4页 / 共127页
数学建模竞赛常用方法之数据处理.ppt_第5页
第5页 / 共127页
点击查看更多>>
资源描述

1、数学建模竞赛常用方法之数据处理方法,南京师范大学泰州学院数科院 王明刚,主要内容,一、 数据的导入与导出,三、 数据插值,二、 数据预处理,四、 数据拟合,2019/10/27,从TXT文件中读取数据,MATLAB中读取文本文件的常用函数,2019/10/27,一、 利用数据导入向导导入TXT文件,2019/10/27,数据文件略去,【例2.1-1】利用数据导入向导读取文件examp02_01.txt至examp02_11.txt中的数据,2019/10/27,二、调用高级函数读取数据,1. 调用importdata函数读取数据,调用格式: importdata(filename) A = i

2、mportdata(filename) A = importdata(filename,delimiter) A = importdata(filename,delimiter,headerline) A D = importdata() A D H = importdata() = importdata(-pastespecial, ),2019/10/27, importdata(examp02_04.txt) x = importdata(examp02_07.txt) x = importdata(examp02_03.txt,;) x = importdata(examp02_08.

3、txt, ,2) x, s, h = importdata(examp02_07.txt) FileContent = importdata(examp02_10.txt),【例2.1-2】调用importdata函数读取文件examp02_01.txt至examp02_11.txt中的数据,2019/10/27,2. 调用load函数读取数据,调用格式: S = load(filename) S = load(filename, variables) S = load(filename, -mat, variables) S = load(filename, -ascii) load(.)

4、load .,2019/10/27, load examp02_01.txt load -ascii examp02_01.txt x1 = load(examp02_02.txt) x1 = load(examp02_02.txt, -ascii); load examp02_03.txt load examp02_04.txt ,【例2.1-3】调用load函数读取文件examp02_01.txt至examp02_12.txt中的数据,2019/10/27,3. 调用dlmread函数读取数据,调用格式: M = dlmread(filename) M = dlmread(filename

5、, delimiter) M = dlmread(filename, delimiter, R, C) M = dlmread(filename, delimiter, range),2019/10/27, x = dlmread(examp02_03.txt) x = dlmread(examp02_03.txt, , 2, 3) x = dlmread(examp02_03.txt, , 1, 2, 2, 5) x = dlmread(examp02_05.txt) x = dlmread(examp02_06.txt) x = dlmread(examp02_09.txt) ,【例2.1

6、-4】调用dlmread函数读取文件examp02_01.txt至examp02_11.txt中的数据,2019/10/27,4. 调用textread函数读取数据,调用格式: A,B,C, = textread(filename,format) A,B,C, = textread(filename,format,N) = textread(,param,value,),textread函数支持的format字符串,textread函数支持的参数名与参数值列表,2019/10/27, x1 = textread(examp02_01.txt); x2 = textread(examp02_02

7、.txt); x3 = textread(examp02_03.txt,delimiter,); c1,c2,c3,c4,c5=textread(examp02_04.txt,%f %f %f %f %f,delimiter,;*); x5 = textread(examp02_05.txt,emptyvalue,-1) x8 = textread(examp02_08.txt,headerlines,7) x9 = textread(examp02_09.txt,delimiter, ,whitespace,+i) c1,c2,c3,c4,c5,c6,c7,c8 = textread(exa

8、mp02_09.txt,. %f %f %f %f %f %f %f %f,delimiter, ,whitespace,+i); ,【例2.1-5】调用textread函数读取文件examp02_01.txt至examp02_11.txt中的数据,2019/10/27,三、调用低级函数读取数据,1. 调用fopen函数打开文件,调用格式: fid, message = fopen(filename, permission) filename, permission = fopen(fid),2019/10/27,2. 调用fclose函数关闭文件,调用格式: status = fclose(

9、fid) status = fclose(all),2019/10/27,3. 调用fseek、ftell、frewind和feof函数控制读写位置,调用格式: status = fseek(fid, offset, origin) %设定文件指针位置 position = ftell(fid) %获取文件指针位置 frewind(fid) %移动当前文件指针到文件的开头 eofstat = feof(fid) %判断是否到达文件末尾,2019/10/27,4. 调用fgets、fgetl函数读取文件的下一行,调用格式: tline = fgets(fid) tline = fgets(fid

10、, nchar) tline = fgetl(fid),2019/10/27,5. 调用textscan函数读取数据,调用格式: C = textscan(fid, format) C = textscan(fid, format, N) C = textscan(fid, format, param, value, ) C = textscan(fid, format, N, param, value, ) C = textscan(str, ) C, position = textscan(),2019/10/27, fid = fopen(examp02_08.txt,r); % 以只读

11、方式打开文件examp02_08.txt fgets(fid); % 读取文件的第1行 fgets(fid); % 读取文件的第2行 A = textscan(fid, %f %f %f %f %f %f, CollectOutput, 1) A = 3x6 double fgets(fid); % 读取文件的第6行 fgets(fid); % 读取文件的第7行 B = textscan(fid, %f %f %f, CollectOutput, 1) B = 2x3 double fclose(fid); % 关闭文件 ,【例2.1-6】调用textscan函数读取文件examp02_01.

12、txt至examp02_13.txt中的数据,2019/10/27,把数据写入TXT文件,MATLAB中写文本文件的常用函数,2019/10/27,一、调用dlmwrite函数写入数据,调用格式: dlmwrite(filename, M) dlmwrite(filename, M, D) dlmwrite(filename, M, D, R, C) dlmwrite(filename, M, attrib1, value1, attrib2, value2, ) dlmwrite(filename, M, -append) dlmwrite(filename, M, -append, att

13、ribute-value list),dlmwrite函数支持的参数名与参数值列表,2019/10/27,% 定义复数矩阵 x=1.455390+1.360686i 8.692922+5.797046i 5.498602+1.449548i 8.530311+6.220551i 3.509524+5.132495i 4.018080+0.759667i 2.399162+1.233189i 1.839078+2.399525i 4.172671+0.496544i 9.027161+9.447872i 4.908641+4.892526i 3.377194+9.000538i; % 将复数矩阵

14、x写入文件examp02_09.txt,用逗号(,)作分隔符,用rn作换行符 dlmwrite(examp02_09.txt, x, delimiter, , newline, pc),【例2.2-1】用逗号作为分隔符,调用dlmwrite函数将如下复数矩阵写入文件examp02_09.txt,2019/10/27,二、调用fprintf函数写入数据,调用格式: count = fprintf(fid, format, A, ),【例】% 在屏幕上显示一句话 y = fprintf(1, 祝福我们伟大的新中国%d周岁生日快乐!, 60) 祝福我们伟大的新中国60周岁生日快乐! y =38,20

15、19/10/27,% 产生一个8行5列的随机矩阵,其元素服从0,10上的均匀分布 x = 10*rand(8,5); % 以写入方式打开文件,返回文件标识符 fid = fopen(examp02_01.txt,wt); % 把矩阵x以指定格式写入文件examp02_01.txt fprintf(fid,%-f %-f %-f %-f %-f %-f %-f %-fn, x); fclose(fid); % 关闭文件 ,【例2.2-2】用fprintf函数将数据写入文件examp02_01.txt至examp02_11.txt的代码,调用fprintf函数写入数据或在屏幕上显示数据时,form

16、at参数指定的格式循环作用在矩阵的列上,原始矩阵的列在文件中或屏幕上就变成了行。,2019/10/27,从Excel文件中读取数据,2019/10/27,一、利用数据导入向导导入Excel文件,2019/10/27,二、调用xlsread函数读取数据,调用格式: num = xlsread(filename) num = xlsread(filename, -1) num = xlsread(filename, sheet) num = xlsread(filename, range) num = xlsread(filename, sheet, range) num = xlsread(fi

17、lename, sheet, range, basic) num = xlsread(filename, , functionhandle) num, txt= xlsread(filename, ) num, txt, raw = xlsread(filename, ) num, txt, raw, X = xlsread(filename, , functionhandle) xlsread filename sheet range basic,2019/10/27,% 读取文件examp02_14.xls第1个工作表中单元格A2:H4中的数据 num = xlsread(examp02_

18、14.xls, A2:H4) % 返回读取的数据矩阵numnum =1 60101 6010101 NaN 0 63 632 60101 6010102 NaN 0 73 733 60101 6010103 NaN 0 0 0,【例2.3-1】用xlsread函数的这种调用读取文件examp02_14.xls第1个工作表中区域A2:H4 的数据,2019/10/27,把数据写入Excel文件,2019/10/27,一、调用xlswrite函数写数据到Excel,调用格式: xlswrite(filename, M) xlswrite(filename, M, sheet) xlswrite(f

19、ilename, M, range) xlswrite(filename, M, sheet, range) status = xlswrite(filename, ) status, message = xlswrite(filename, ) xlswrite filename M sheet range,2019/10/27,% 生成一个10行10列的随机矩阵,其元素服从0,1上的均匀分布 x = rand(10); % 把矩阵x写入文件examp02_15.xls的第2个工作表中的单元格区域D6:M15,并返回操作信息 s,t = xlswrite(examp02_15.xls, x,

20、 2, D6:M15)s =1t = message: identifier: ,【例2.4-1】生成一个1010的随机数矩阵,将它写入Excel文件examp02_15.xls的第2个工作表的指定区域,2019/10/27, x = 1,60101,6010101,陈亮,63,;2,60101,6010102,李旭,73,;3,60101,. 6010103,刘鹏飞,0,缺考 % 定义一个元胞数组x = 1 60101 6010101 陈亮 63 2 60101 6010102 李旭 73 3 60101 6010103 刘鹏飞 0 缺考% 把元胞数组x写入文件examp02_15.xls的

21、指定工作表(xiezhh)中的单元格区域A3:F5 xlswrite(examp02_15.xls, x, xiezhh, A3:F5),【例2.4-2】定义一个元胞数组,将它写入Excel文件examp02_15.xls的自命名工作表的指定区域,2019/10/27,% 读取文件examp02_14.xls中的数值型数据 num = xlsread(examp02_14.xls); % 把读取的数据num写入文件examp02_15.xls中的名称为成绩的工作表的默认区域 xlswrite(examp02_15.xls, num, 成绩),【例2.4-3】读取文件examp02_14.xls

22、中的数值型数据,并将读取的数据写入文件examp02_15.xls的自命名工作表的默认区域,2019/10/27,主要内容数据的平滑处理数据的标准化变换数据的极差归一化变换,数据的预处理,2019/10/27,数据的平滑处理,2019/10/27,一、 smooth函数,调用格式: yy = smooth(y) yy = smooth(y,span) yy = smooth(y,method) yy = smooth(y,span,method) yy = smooth(y,sgolay,degree) yy = smooth(y,span,sgolay,degree) yy = smooth

23、(x,y,),2019/10/27,% 产生一个从0到2*pi的向量,长度为500 t = linspace(0,2*pi,500); y = 100*sin(t); % 产生正弦波信号 % 产生500行1列的服从N(0,152)分布的随机数,作为噪声信号 noise = normrnd(0,15,500,1); y = y + noise; % 将正弦波信号加入噪声信号 figure; % 新建一个图形窗口 plot(t,y); % 绘制加噪波形图 xlabel(t); % 为X轴加标签 ylabel(y = sin(t) + 噪声); % 为Y轴加标签,【例3.1-1】产生一列正弦波信号,

24、加入噪声信号,然后调用smooth函数对加入噪声的正弦波进行滤波(平滑处理),2019/10/27,移动平均法: yy1 = smooth(y,30); % 利用移动平均法对y进行平滑处理 figure; % 新建一个图形窗口 plot(t,y,k:); % 绘制加噪波形图 hold on; plot(t,yy1,k,linewidth,3); % 绘制平滑后波形图 xlabel(t); % 为X轴加标签 ylabel(moving); % 为Y轴加标签 legend(加噪波形,平滑后波形);,2019/10/27,lowess方法: % 利用lowess方法对y进行平滑处理 yy2 = sm

25、ooth(y,30,lowess); figure; % 新建一个图形窗口 plot(t,y,k:); % 绘制加噪波形图 hold on; plot(t,yy2,k,linewidth,3); % 绘制平滑后波形图 xlabel(t); % 为X轴加标签 ylabel(lowess); % 为Y轴加标签 legend(加噪波形,平滑后波形);,2019/10/27,rlowess方法: % 利用rlowess方法对y进行平滑处理 yy3 = smooth(y,30,rlowess); figure; % 新建一个图形窗口 plot(t,y,k:); % 绘制加噪波形图 hold on; pl

26、ot(t,yy3,k,linewidth,3); % 绘制平滑后波形图 xlabel(t); % 为X轴加标签 ylabel(rlowess); % 为Y轴加标签 legend(加噪波形,平滑后波形);,2019/10/27,loess方法: % 利用loess方法对y进行平滑处理 yy4 = smooth(y,30,loess); figure; % 新建一个图形窗口 plot(t,y,k:); % 绘制加噪波形图 hold on; plot(t,yy4,k,linewidth,3); % 绘制平滑后波形图 xlabel(t); % 为X轴加标签 ylabel(loess); % 为Y轴加标

27、签 legend(加噪波形,平滑后波形);,2019/10/27,sgolay方法: % 利用sgolay方法对y进行平滑处理 yy5 = smooth(y,30,sgolay,3); figure; % 新建一个图形窗口 plot(t,y,k:); % 绘制加噪波形图 hold on; plot(t,yy5,k,linewidth,3); % 绘制平滑后波形图 xlabel(t); % 为X轴加标签 ylabel(sgolay); % 为Y轴加标签 legend(加噪波形,平滑后波形);,2019/10/27,2019/10/27,二、smoothts函数,调用格式: output = sm

28、oothts(input) output = smoothts(input, b, wsize) % 盒子法 output = smoothts(input, g, wsize, stdev) % 高斯窗方法 output = smoothts(input, e, n) % 指数法,2019/10/27,【例3.1-2】现有上海股市日开盘价、最高价、最低价、收盘价、收益率等数据,时间跨度为2005年1月4日至2007年4月3日,共510组数据。完整数据保存在文件examp03_02.xls中,其中部分数据如下图所示。试调用smoothts函数对日收盘价数据进行平滑处理,2019/10/27,绘

29、制日收盘价曲线图: % 从文件examp03_02.xls中读取数据 x = xlsread(examp03_02.xls); price = x(:,4); % 提取矩阵x的第4列数据,即收盘价数据 figure; % 新建一个图形窗口 % 绘制日收盘价曲线图,黑色实线,线宽为2 plot(price,k,LineWidth,2); % 为X轴和Y轴加标签 xlabel(观测序号); ylabel(上海股市日收盘价);,2019/10/27,盒子法: % 用盒子法平滑数据,窗宽为30 output1 = smoothts(price,b,30); % 用盒子法平滑数据,窗宽为100 outp

30、ut2 = smoothts(price,b,100); figure; % 新建一个图形窗口 plot(price,.); % 绘制日收盘价散点图 hold on % 绘制平滑后曲线图,黑色实线,线宽为2 plot(output1,k,LineWidth,2); % 绘制平滑后曲线图,黑色点划线,线宽为2 plot(output2,k-.,LineWidth,2); xlabel(观测序号); ylabel(Box method); % 为X轴和Y轴加标签 % 为图形加标注框 legend(原始散点,平滑曲线(窗宽30),平滑曲线(窗宽100),location,northwest);,20

31、19/10/27,用高斯窗方法平滑数据: output3 = smoothts(price,g,30); % 窗宽为30,标准差为默认值0.65 output4 = smoothts(price,g,100,100); % 窗宽为100,标准差为100 figure; % 新建一个图形窗口 plot(price,.); % 绘制日收盘价散点图 hold on % 绘制平滑后曲线图,黑色实线,线宽为2 plot(output3,k,LineWidth,2); % 绘制平滑后曲线图,黑色点划线,线宽为2 plot(output4,k-.,LineWidth,2); % 为X轴和Y轴加标签 xlab

32、el(观测序号); ylabel(Gaussian window method); legend(原始散点,平滑曲线(窗宽30,标准差0.65),.平滑曲线(窗宽100,标准差100),location,northwest);,2019/10/27,用指数法平滑数据: output5 = smoothts(price,e,30); % 用指数法平滑数据,窗宽为30 output6 = smoothts(price,e,100); % 用指数法平滑数据,窗宽为100 figure; % 新建一个图形窗口 plot(price,.); % 绘制日收盘价散点图 hold on % 绘制平滑后曲线图,

33、黑色实线,线宽为2 plot(output5,k,LineWidth,2); % 绘制平滑后曲线图,黑色点划线,线宽为2 plot(output6,k-.,LineWidth,2); % 为X轴和Y轴加标签 xlabel(观测序号); ylabel(Exponential method); legend(原始散点,平滑曲线(窗宽30),平滑曲线(窗宽100),location,northwest);,2019/10/27,2019/10/27,三、medfilt1函数(一维中值滤波),调用格式: y = medfilt1(x,n) y = medfilt1(x,n,blksz) y = med

34、filt1(x,n,blksz,dim),2019/10/27,% 产生一个从0到2*pi的向量,长度为500 t = linspace(0,2*pi,500); y = 100*sin(t); % 产生正弦波信号 % 产生500行1列的服从N(0,152)分布的随机数,作为噪声信号 noise = normrnd(0,15,500,1); y = y + noise; % 将正弦波信号加入噪声信号 figure; % 新建一个图形窗口 plot(t,y); % 绘制加噪波形图 xlabel(t); % 为X轴加标签 ylabel(y = sin(t) + 噪声); % 为Y轴加标签,【例3.

35、1-3】产生一列正弦波信号,加入噪声信号,然后调用medfilt1函数对加入噪声的正弦波进行滤波(平滑处理),2019/10/27,中值滤波: % 调用medfilt1对加噪正弦波信号y进行中值滤波,并绘制波形图 yy = medfilt1(y,30); % 指定窗宽为30,对y进行中值滤波 figure; % 新建一个图形窗口 plot(t,y,k:); % 绘制加噪波形图 hold on % 绘制平滑后曲线图,黑色实线,线宽为3 plot(t,yy,k,LineWidth,3); xlabel(t); % 为X轴加标签 ylabel(中值滤波); % 为Y轴加标签 legend(加噪波形,

36、平滑后波形);,2019/10/27,2019/10/27,数据的标准化变换,2019/10/27,一、 标准化变换公式,2019/10/27,二、标准化变换的MATLAB实现,调用格式: Z = zscore(X) Z,mu,sigma = zscore(X) = zscore(X,1) = zscore(X,flag,dim),1. zscore函数,2019/10/27,% 调用rand函数产生一个10行,4列的随机矩阵,每列服从不同的均匀分布 x = rand(10,1), 5*rand(10,1), 10*rand(10,1), 500*rand(10,1) % 调用zscore函数

37、对x进行标准化变换(按列标准化), % 返回变换后矩阵xz,以及矩阵x各列的均值构成的向量mu,各列的标准差构成的向量sigma xz,mu,sigma = zscore(x) std(xz) % 求标准化后矩阵xz的各列的标准差,【例3.2-1】调用rand函数产生一个随机矩阵,然后调用zscore函数将其按列标准化,2019/10/27,数据的极差归一化变换,2019/10/27,一、 极差归一化变换公式,2019/10/27,二、极差归一化变换的MATLAB实现,调用格式: R = rscore(X) R,xmin,xrange = rscore(X) = rscore(X,dim),1

38、. 自编的rscore函数,2019/10/27,% 调用rand函数产生一个10行,4列的随机矩阵,每列服从不同的均匀分布 x = rand(10,1), 5*rand(10,1), 10*rand(10,1), 500*rand(10,1) % 调用rscore函数对x按列进行极差归一化变换, % 返回变换后矩阵R,以及矩阵x各列的最小值构成的向量xmin,各列的极差构成的向量xrange R,xmin,xrange = rscore(x),【例3.3-1】调用rand函数产生一个随机矩阵,然后调用rscore函数对其按列进行极差归一化变换,2019/10/27,调用格式: Y,PS =

39、mapminmax(X,YMIN,YMAX) Y,PS = mapminmax(X,FP) Y = mapminmax(apply,X,PS) X = mapminmax(reverse,Y,PS) dy_dx = mapminmax(dy_dx,X,Y,PS) dx_dy = mapminmax(dx_dy,X,Y,PS),2. 自带的mapminmax函数,2019/10/27,% 调用rand函数产生一个10行,4列的随机矩阵,每列服从不同的均匀分布 x = rand(10,1), 5*rand(10,1), 10*rand(10,1), 500*rand(10,1) % 调用rscor

40、e函数对x按列进行极差归一化变换, % 返回变换后矩阵R,以及矩阵x各列的最小值构成的向量xmin,各列的极差构成的向量xrange FP.ymin = 0; FP.ymax = 1; y = mapminmax(x,FP),【例3.3-2】调用rand函数产生一个随机矩阵,然后调用mapminmax函数对其按列进行极差归一化变换,数 据 插 值,基本定义:,插值问题:给定一批数据点,需确定满足特定要求的曲线或曲面,如果要求所求曲线(面)通过所有给定的数据点,这就是插值问题。,数据拟合:如果不要求曲线(面)通过所有给定的数据点,而是要求它反映对象整体的变化趋势,可得到更简单实用的近似函数,这就

41、是数据拟合,又称曲线拟合或曲面拟合。,一维插值的定义,节点可视为由,产生,表达式复杂,或无封闭形式,或未知.,返回,1 .拉格朗日(Lagrange)插值,两点一次(线性)插值多项式(一次拉格朗日插值公式):,例1 根据下表给出的平方根值,用线性插值计算sqrt(5),三点二次(抛物)插值公式:,例2 根据例1给出的数据,用抛物线法计算,称为拉格朗日插值基函数,已知函数f(x)在n+1个点x0,x1,xn处的函数值为 y0,y1,yn 求一n次多项式函数Pn(x),使其满足:Pn(xi)=yi,i=0,1,n.,解决此问题的拉格朗日插值多项式公式如下,其中Li(x) 为n次多项式:,一般情形,

42、采用拉格朗日多项式插值:选取不同插值节点n+1个,其中n为插值多项式的次数,当n分别取2,4,6,8,10时,绘出插值结果图形.,例1,clc x = -5:0.01:5; y = 1./(1+x.2); plot(x,y,linewidth,2) gtext(1/(1+x2) hold on pause,n = 3 x0 = linspace(-5,5,3); y0 = 1./(1+x0.2); y1 = lagr1(x0,y0,x) plot(x,y1,r,linewidth,2) gtext(n=2) pause,n = 5 x0 = linspace(-5,5,5); y0 = 1./

43、(1+x0.2); y2 = lagr1(x0,y0,x) plot(x,y2,b,linewidth,2) gtext(n=4) pause,拉格朗日多项式插值的这种振荡现象叫 Runge现象,2.分段线性插值,计算量与n无关; n越大,误差越小.,例2,用分段线性插值法求插值,并观察插值误差.,1.在-6,6中平均选取5个点作插值,4.在-6,6中平均选取41个点作插值,2.在-6,6中平均选取11个点作插值,3.在-6,6中平均选取21个点作插值,clc x = -6:0.1:6; y = 1./(1+x.2); plot(x,y,linewidth,2) gtext(1/(1+x2)

44、hold on pause,n = 5 x1 = linspace(-6,6,5) y1 = 1./(1+x1.2); plot(x1,y1,linewidth,2) gtext(n=4) pause,n = 11 x2 = linspace(-6,6,11) y2 = 1./(1+x2.2); plot(x2,y2,linewidth,2) gtext(n=10) pause,比分段线性插值更光滑,在数学上,光滑程度的定量描述是:函数(曲线)的k阶导数存在且连续,则称该曲线具有k阶光滑性光滑性的阶次越高,则越光滑是否存在较低次的分段多项式达到较高阶光滑性的方法?三次样条插值就是一个很好的例子

45、,3.三次样条插值,三次样条插值,g(x)为被插值函数,例3,用三次样条插值选取11个基点计算插值,clc x = -6:0.1:6; y = 1./(1+x.2); x1 = linspace(-6,6,11); y1 = interp1(x,y,x1,spline) plot(x,y,k,x1,y1,r),用MATLAB作插值计算,一维插值函数:,yi=interp1(x,y,xi,method),nearest 最邻近插值;linear 线性插值; spline 三次样条插值; cubic 立方插值;缺省时 分段线性插值,注意:所有的插值方法 都要求x是单调的,并且xi不 能够超过x的范

46、围,例4:从1点12点内,每隔1小时测量一次温度,测得的温度的数值依次为:5,8,9,15,25,29,31,30,22,25,27,24 (1)试估计在3.1h,6.8h,7.5h,11.8h时的温度值; (2)试估计每隔1/10小时的温度值,clc sj = 1:12; wd = 5,8,9,15,25,29,31,30,22,25,27,24; % sj1 = 3.1 6.8 7.5 11.8; % t = interp1(sj,wd,sj1) % T = interp1(sj,wd,sj1,spline)sj2 = 1:0.1:12; t = interp1(sj,wd,sj2,spl

47、ine) plot(sj,wd,o,sj2,t,*),例5 已知飞机下轮廓线上数据如下,求x每改变0.1时的y值,已知 mn个节点,;,二维插值的定义,第一种(网格节点):,第二种(散乱节点):,注意:最邻近插值一般不连续具有连续性的最简单的插值是分片线性插值,1.最邻近插值,二维或高维情形的最邻近插值,与被插值点最邻近的 节点的函数值即为所求,网格节点插值有如下几种形式:,将四个插值点(矩形的四个顶点)处的函数值依次简记为:,2.分片线性插值,f (xi, yj)=f1,f (xi+1, yj)=f2,f (xi+1, yj+1)=f3,f (xi, yj+1)=f4,插值函数为:,第二片(上三角形区域):(x, y)满足,插值函数为:,注意:(x, y)当然应该是在插值节点所形成的矩形区域内显然,分片线性插值函数是连续的;,分两片的函数表达式如下:,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报