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, ...
随机推荐
- 使用批处理文件(.bat)启动多个CMD窗口并执行命令
由于每次启动本机的kafka都需要打开2个cmd窗口,分别启动zookeeper服务和kafka服务,操作相对繁琐,于是想起了批处理来帮忙一键启动. 在桌面新建一个txt文件,改后缀名为.bat,并加 ...
- LuoguP7593 凑数 题解
Content 给定 \(n\) 个整数 \(1,2,\dots,n\),请问是否能从这 \(n\) 个数中恰好选 \(k\) 个数,使得这 \(k\) 个数的和为 \(s\). 数据范围:\(t\) ...
- AT5221 [ABC140C] Maximal Value 题解
Content 有一个长度为 \(n\) 的数列 \(A\) 未知,已知一个数列 \(B=\{b_1,b_2,...,b_{n-1}\}\),且满足 \(b_i\geqslant \max\{a_i, ...
- tomcat下部署两个工程时,只有一个可以访问,另一个出现404错误,该如何解决
tomcat下部署两个工程时,只有一个可以访问,另一个出现404错误,该如何解决 在开发新项目的时候,有时候为了省时,直接把曾经做过的项目工程A拷贝成改名为B工程,然后再在B工程上进行功能的开发, 此 ...
- Linux(centos)使用nc命令发送测试数据
安装 yum -y install nmap-ncat 简单使用 nc -lk 7777 # 开启一个本地7777的TCP协议端口,由客户端主动发起连接,一旦连接必须由服务端发起关闭 nc -vw 2 ...
- 【九度OJ】题目1431:Sort 解题报告
[九度OJ]题目1431:Sort 解题报告 标签(空格分隔): 九度OJ [LeetCode] http://ac.jobdu.com/problem.php?pid=1431 题目描述: 给你n个 ...
- RabbitMQ学习笔记三:Java实现RabbitMQ之与Spring集成
搭建好maven项目环境,加入RabbitMQ依赖包 <dependency> <groupId>org.springframework.amqp</groupId> ...
- Trial-faster-rcnn
目录 motivation 实验设置 实验结果 motivation 试一下faster rcnn的代码, 主要想看看backbone训练一部分好呢还是全部都训练好呢? 实验设置 Attribute ...
- Chapter 21 G-Methods for Time-Varying Treatments
目录 21.1 The g-formula for time-varying treatments 21.2 IP weighting for time-varying treatments 21.3 ...
- DeepFool: a simple and accurate method to fool deep neural networks
目录 概 主要内容 二分类模型 为线性 为一般二分类 多分类问题 仿射 为一般多分类 Moosavidezfooli S, Fawzi A, Frossard P, et al. DeepFool: ...