Matlab基础学习----------------------函数插值

%% 函数插值
% 比较常用的是用于实现一维数据插值的interp1,用于实现二维数据插值的interp2,lagrange,newton插值

% 一维插值
% YI=interp1(X,Y,XI,'method')
% 函数根据X和Y的值计算函数在XI处的值。X和Y已知长度相同,用来描述采样点的信息
% XI是一个向量或者标量,描述插值点
% YI是根据样本点和插值点求出的值
% 注意:XI的范围不能超过X的取值范围,否则会出现NAN错误
% method是插值方法
% 实例:
x=-pi:0.5:pi;
y=sin(x)+cos(x);
xi=-pi:0.1:pi;

% 线性插值:默认方法,该方法需要将插值点附近的两个数据点用直线连接,然后在直线上选择相应的插值点数据
yi_linear=interp1(x,y,xi,'linear');
% 最近点插值:根据已知插值点与已知数据点之间的远近程度进行插值,优先选择较近的数据点
yi_nearest=interp1(x,y,xi,'nearest');
% 3次多项式插值:根据已知数据求出一个三次多项式,根据多项式进行插值
yi_spline=interp1(x,y,xi,'cubic');
% 三次样条插值:在每个子区间构造一个三次多项式,使插值函数除了满足插值条件外,还要在各个结点处具有光滑的条件
yi_cubic=interp1(x,y,xi,'spline');% 与 YI=splineA(X,Y,XI)函数相同
figure;
hold on;
subplot(2,2,1);
plot(x,y,'ro',xi,yi_linear,'b-');
title('线性插值');

subplot(2,2,2);
plot(x,y,'ro',xi,yi_nearest,'b-');
title('最邻近插值');

subplot(2,2,3);
plot(x,y,'ro',xi,yi_spline,'b-');
title('三次样条插值');

subplot(2,2,4);
plot(x,y,'ro',xi,yi_cubic,'b-');
title('三次多项式插值');

%% 二维插值
% 可以得到一个插值曲面,思想与一维插值类似
% 二维插值得到函数z=f(x,y) 其中x和y是自变量,z是插值
% 语法
interp2(X,Y,Z,XI,YI,'method')

一维插值结果:

时间: 2024-12-20 07:13:52

Matlab基础学习----------------------函数插值的相关文章

Matlab基础学习------------------函数的极值、积分问题Matlab实现

<span style="font-size:18px;">% 函数的积分问题Matlab实现 %% 函数极值点 % 1.一元函数的极小值点 % 实例:求f(x)=x^3-x^2-x+1在区间[-2,2]的极小值点 [email protected](x)x.^3-x.^2-x+1 x=fminbnd(f,-2,2) %使用fminbnd()函数求解一元函数的极小值点,参数分别为f(x)和区间短点 y=f(x) %极小值点对应的函数值 %结果 % f = % @(x)x.^

Matlab基础学习--------函数句柄

函数句柄是Matlab的一种常见数据类型. 函数句柄创建使用 @ 或者 str2func()来生成函数句柄. >> %创建一个cos()函数句柄 >> %方法1:[email protected] >> [email protected] hcos = @cos >> %方法2:fh = str2func('cos') >> fh = str2func('cos') fh = @cos >> functions(hcos) %使用fu

Matlab基础学习------------------函数微分

<span style="font-size:18px;">% 函数微分 % 函数微分比函数积困难,积分描述函数的整体性质,微分描述函数在某一点的斜率 % 由于微分非常困难,应尽量避免数值微分,特别是对实验获得的数据进行微分,这种情况下 % 最好用最小二乘曲线拟合这种数据,然后对多项式进行微分 % 1.使用diff()求解数值微分 % diff(x) % x为向量,所得值为[x(2)-x(1),x(3)-x(2),x(4)-x(3)...] % x是矩阵,得到矩阵的差分 %

Matlab基础学习---------常用的数学函数实例学习

%% 求和函数 % 1.sum(x) 返回数组x所有值之和,x表示一个数组 % 实例 x=[1,2,3,4,5]; sum(x) %结果: % ans = % 15 % 2.sum(X) 返回矩阵X各列元素之和的矩阵 X=[1,2,3;4,5,6;7,8,9] sum(X) %结果: % X = % 1 2 3 % 4 5 6 % 7 8 9 % ans = % 12 15 18 % 3.cumsum(x) 返回一个数组x中元素累计和的向量 x cumsum(x) % 结果 % x = % 1

Matlab基础学习--------关系和逻辑运算及多项式运算

直接给出实例,实例中包含知识点的讲解: %% 关系运算符 % < <= > >= == ~=(不等于) % 比较魔方矩阵中大学元素的值大于4 % 魔方矩阵:矩阵的每行每列和两条对角线上的和都相等 a=magic(3) %生成一个3*3的魔方矩阵 a>4*ones(3) %与全为4的矩阵进行比较 magic(6) %生成6*6的魔方矩阵 %运行结果: % a = % % 8 1 6 % 3 5 7 % 4 9 2 % ans = % % 1 0 1 % 0 1 1 % 0 1

Matlab基础学习----------------元胞数组

与架构数组类似,元胞数组也可以存放不同类型不同大小的数据,每个元素称为一个元胞(cell). (1)元胞数组的创建 三种方法:直接赋值法,利用函数cell()和利用{}直接创建元胞数组的所有单元. 实例: %1.直接赋值法 %通过赋值语句将值赋到单元数组的一个单元中,每次只能创建一个单元内容: %有两种赋值方法:内容索引法和单元索引法 %(1)内容索引法:赋值语句左边用大括号将单元的下表括起来,右边为单元内容 %实例:创建一个2*2的元胞数组 c{1,1}='this is a cell arr

matlab 基础 unique函数与ismember函数

(1)unique函数 函数格式: b = unique (a)             %取集合a的不重复元素构成的向量: b = unique (A,'rows')   %返回A.B不同行元素组成的矩阵: [b,i,j] = unique (-)      %其中 i 体现b中元素在原向量(矩阵a)中的位置:j体现原向量(矩阵a)在b中的位置: 代码: >> A=[1 2 3;4 5 6;7 8 9;1 2 3;5 5 5;6 6 6;6 7 8] A = 1 2 3 4 5 6 7 8

Matlab基础学习-----------Matlab求解常微分方程边值问题的方法

算法代码 solinit =bvpinit(linspace(0,4,5),[1 0]); % linspace(0,4,5)为初始网格,[1,0]为初始估计值 sol=bvp4c(@twoode,@twobc,solinit); % twoode与twobc分别为微分方程与边界条件的函数,solinit为结构 x=linspace(0,4); %确定x范围 y=deval(sol,x); %确定y范围 plot(x,y(1,:)); %画出y-x的图形 %定义twoode函数(下述代码另存为工

Matlab基础学习--------多项式及其操作

直接上代码(其中包含详细的实例和注释) %% 多项式及其操作 % 使用poly2sym()函数来构造多项式 % 实例 构造多项式:2*x^6+3*x^5+4*x^4+8*x+1 A=[2 3 4 0 0 8 1]; poly2sym(A) % 结果 ans = 2*x^6+3*x^5+4*x^4+8*x+1 %多项式的根(即多项式表达式=0对应的x的值) % 实例 A=[2 3 4 0 0 8 1]; poly2sym(A) %构造多项式 x=roots(A) % 求多项式的根 % 结果 ans