MATLAB中插值算法实现
%%%1.M文件
%(1).以往少的程序可以在命令行窗口进行编码,但大量的程序编排到命令行窗口,
%会有造成乱码的危险.
(2).如果将命令编成程序存储在一个文件中(M文件),依次运行文件中的命令,
则可以重复进行
%(3).M文件根据调用方式的不同可以分为两类:
Script:脚本文件/命令文件
Function:函数文件
M文件均以 .m为扩展名
(4).
(5).
(6).
%%%2.数据输入:input
>>A=input('请输入你要输入的数字:');
请输入你要输入的数字:1.2 %输入后保存到A里面
(1).A = importdata(filename)将数据从文件名所表示的文件中加载到数组 A 中
(2).num=xlsread(filename)适用于纯数值型数据
%a.xlsread 是数学软件 MATLAB 中读取 Excel 文件中数据的一个函数
%即从当前程序所在文件夹里,按照函数中的参数指定的范围,从单元格开始读取文件,返回数据。
b. num = xlsread(‘filename’,‘sheet’)选择所在的sheet,比如说’sheet1’
c.num = xlsread(‘filename’, ‘range’)所在的单元格范围,比如说range=‘A1:A8’
(3).A=readtable(filename)通过从文件中读取列向数据来创建表。
+++++申明: filename是文件名字 pathname是该文件地址
%%%3.网格线和坐标边框
(1).网格线:grid on
grid off
%figure() 函数figure主要是创建图窗窗口
figure(n)查找到n存在时,将当前窗口切换成n,不存在时创建标识为n的图窗
(2).对数坐标图:
semilogy(x1,y1,'参数1'…)%x轴为线性坐标刻度,y轴为常用对数刻度
%%%4.数据处理:
(1).插值问题:题目所给的数值参考(一堆数据)是按照规律每隔多少进行测量所得到的值:
那么问题来了:求那些在规律间隔内的数,并做出变化图
%上述问题可归结为:已知函数在某区间(域)内若干个点所处的位置,求函数在该区间其他点上的值
在x0,x1…x(n)处取值y0,y1…y(n),关于y(n)的多项式存在并且唯一(就是过这些点的方程是唯一的)
所以这个方程就是插值问题的解
%常用的插值法:Lagrange:拉格朗日多项式插值法
科学研究中,几乎所有的问题都可以用y=f(x)的方程进行表达,但在实践中,我们只知道一部分坐标的
数据,而根据这些数据我们能够求出这些数据的解析式,但无法求出这些数据(x)之外的所对应的y值。
所以多项式插值应运而生。
%假设有3个不在同一直线上的点,分别为(x1,y1)、(x2,y2)、(x3,y3),求出过这3个点的曲线方程
%假设方程为:f(x)=a0+a1*x+a2*x^x
则有f1(x1)=a0+a1*x1+a2*x2^2
f2(x2)=a0+a1*x2+a2*x2^2
f3(x3)=a0+a1*x3+a2*x2^2 %确实难解三元2次方程组
拉格朗日认为可以通过三根二次曲线相加来达到目标。那这是怎么的三根二次曲线呢?
第一根曲线f1(x1),在 x1 点处取值,f1(x1)=1,f2(x2)=f3(x3)=0,因此得到过(x1,1)(x2,0)(x3,0)
的曲线,
第二根曲线f2(x2),在 x2 点处取值,f2(x2)=1,f1(x1)=f3(x3)=0,因此得到过(x1,0)(x2,1)(x3,0)
的曲线,
第三根曲线f3(x3),在 x3 点处取值,f3(x3)=1,f2(x2)=f1(x1)=0,因此得到过(x1,0)(x2,0)(x3,1)
的曲线,
往下依次……
%所以得到,y1*f1(x1)--->从坐标角度理解:那么就得到了过(x1,y1)的曲线
%y2*f2(x2)--->过(x2,y2)的曲线
%y3*f3(x3)--->过(x3,y3)的曲线
在根据拉格朗日的说法:f(x)=y1*f1(x)+y2*f2(x)+y3*f3(x)
所以得到通式:f(x)=y(i)*fi(x)
%%拉格朗日多项式插值实现流程:
1.根据初始数据x的取值求出相应的y值
2.建立m×n的矩阵
3.计算f(x)=y(i)*fi(x)(for循环)
(2).高次拉格朗日插值的Runge(龙格)现象:
Runge(龙格)的研究,证明了多项式插值的次数不超过七时成立,超过七时,插值多项式会出现严重的
震荡现象(称为Runge现象)
以f(x)=1/(1+(25*x)^2)为例:
%演示龙格函数的插值情况
for i=3:2:11
x=linspace(-1,1,i);
y=1./(1+25*x.^2);
p=polyfit(x,y,i-1);
xx=-1:0.01:1;
yy=polyval(p,xx);
plot(xx,yy,'b');
hold on;
grid on;
end;
plot(x,1./(1+25*x.^2),'r');
(2).MATLAB中一维插值:
一维插值命令是interp1,格式为:y(i)=interp1(x,y,xi,'选用的插值方法是什么(Lagrange)等等');
%x,y:是我已知的坐标
%xi:是我待插值的坐标
%插值方法:'nearest'-最邻值插值
'linear'--线性插值
'spline'--三次样条插值
'cubic'--立方插值
二维插值命令是interp2,格式为:z(i)=interp2(x,y,z,xi,yi,'方法');
MATLAB中插值算法实现的更多相关文章
- paper 121 :matlab中imresize函数
转自:http://www.cnblogs.com/rong86/p/3558344.html matlab中函数imresize简介: 函数功能:该函数用于对图像做缩放处理. 调用格式: B = i ...
- matlab中imresize
matlab中函数imresize简介: 函数功能:该函数用于对图像做缩放处理. 调用格式: B = imresize(A, m) 返回的图像B的长宽是图像A的长宽的m倍,即缩放图像. m大于1, 则 ...
- MATLAB中的函数的归总
字符串操作函数 1. 函数eval可以用来执行用字符串表示的表达式 2. 函数deblank可以去掉字符串末尾的所有空格 3. 函数findstr可以用来在长 ...
- Matlab中插值函数汇总(上)
Matlab中插值函数汇总分上下两个部分,主要整合自matlabsky论坛dynamic发表于2009-2-21 21:53:26 的主题帖,以及豆丁网rickoon上传的教材第8章<插值,拟合 ...
- [转载]Matlab中插值函数汇总和使用说明
http://blog.sciencenet.cn/blog-457143-679275.html MATLAB中的插值函数为interp1,其调用格式为: yi= interp1(x,y,xi,' ...
- MATLAB中绘制质点轨迹动图并保存成GIF
工作需要在MATLAB中绘制质点轨迹并保存成GIF以便展示. 绘制质点轨迹动图可用comet和comet3命令,使用例子如下: t = 0:.01:2*pi;x = cos(2*t).*(cos(t) ...
- matlab 中 eps 的分析
eps(a)是|a|与大于|a|的最小的浮点数之间的距离,距离越小表示精度越高.默认a=1: 这里直接在matlab中输入:eps == eps(1)(true). 我们知道浮点数其实是离散的,有限的 ...
- matlab中patch函数的用法
http://blog.sina.com.cn/s/blog_707b64550100z1nz.html matlab中patch函数的用法——emily (2011-11-18 17:20:33) ...
- MATLAB中FFT的使用方法
MATLAB中FFT的使用方法 说明:以下资源来源于<数字信号处理的MATLAB实现>万永革主编 一.调用方法X=FFT(x):X=FFT(x,N):x=IFFT(X);x=IFFT(X, ...
随机推荐
- 一站式云原生在线研发平台 StarOS 种子用户邀请计划正式开启!
云时代的开发者,你好: 你是否也曾畅想过,关于云的未来? 不是作为消费者,也不是作为企业,是对于开发者而言,云会变成什么样. 同为开发者,我们常在想,我们开发了一个又一个应用,让太多人因服务在线而获益 ...
- Jaeger的客户端采样配置(Java版)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 对QuerySet的理解
1. 如何通过Django的Model操作数据库? 在Django的Model中,QuerySet是一个很重要的概念.因为我们同数据库的所有查询以及更新交互都是通过它来完成的. 2. Django的M ...
- CF1454A Special Permutation 题解
Content 给定一个整数 \(n\),请构造出一个长度为 \(n\) 的排列 \(\{a_i\}_{i=1}^n\),使得对于每个 \(a_i\),都有 \(a_i\neq i\). 我们称一个长 ...
- 存储技术之ceph了解
ceph rados:可靠的.自动的.分布式.对象存储 特性:高效性,统一性(文件存储,块存储,对象存储),可扩展 没有数据库的概念:为cluster map 记录集群状态. PG:(ceph核心单位 ...
- 使用.NET 6开发TodoList应用(8)——实现全局异常处理
系列导航 使用.NET 6开发TodoList应用文章索引 需求 因为在项目中,会有各种各样的领域异常或系统异常被抛出来,那么在Controller里就需要进行完整的try-catch捕获,并根据是否 ...
- 【LeetCode】280. Wiggle Sort 解题报告 (C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 排序后交换相邻元素 日期 题目地址:https://l ...
- 【九度OJ】题目1015:还是A+B 解题报告
[九度OJ]题目1015:还是A+B 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1015 题目描述: 读入两个小于10000的正整 ...
- 【LeetCode】28. Implement strStr() 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 find函数 遍历+切片 日期 题目地址:https ...
- 【LeetCode】74. Search a 2D Matrix 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 左下或者右上开始查找 顺序查找 库函数 日期 题目地 ...