Matlab: 如何循环使用不同的插值方法? matlabwhile循环举例
matlab 怎么进行三次样条插值
spline函数可以实现三次样条插值:
x = 0:10;
y = sin(x);
xx = 0:.25:10;
yy = spline(x,y,xx);
plot(x,y,'o',xx,yy)
(另外fnplt csapi这两个函数也是三次样条插值函数)
如何用matlab实现一维插值:
1、先看一个实例,最后再来说明一维插值在matlab中的用法。实例如下图,用13个节点作三种插值,并比较结果。
2、首先启动matlab,选择编辑器,再新建一个命令文件。
3、然后,在编辑器窗口中输入本题的代码。如下图所示。并保存,此处命名为yiwei。
4、最后再命令行窗口处输入yiwei,并敲入键盘上的enter建。最终得到的结果是插值与原来的13个数据点之间的比较图,可以看出结果很好。
(通过上面的例子,也知道了matlab进行一维插值的命令是interp1.该命令的形式为y1=interp1(x0,y0,x1,'method').功能:根据已知的数据(x0,y0),用method方法进行插值,然后计算x1对应的函数值y1.)
(其中的参数及其注意事项。x0,y0是已知的数据向量,其中x应以升序或者降序排列,x1是插值点的自变量坐标向量;method是用来选择插值算法的,它可以取:‘linear’(线性插值)、‘cubic’(三次多项式插值)、‘nearst’(最近插值)、‘spline’(三次样条插值)。)
参考资料
matlab中文论坛.matlab中文论坛[引用时间2018-1-9]
matlab while循环的使用技巧。就是输出循环的运算次数,自己试了多次,结果都是最初的i值
怎么可能发生你说的情况呢?
贴出代码来帮你查错。
简单示例:
>> i=1;while i<=5,disp(i);i=i+1;end
1
2
3
4
5
用matlab实现拉格朗日插值法的程序
附件中是拉格朗日插值法程序。
以下面数据为例:(运行时,也就是调用Language.m程序)
x = [-2.15 -1.00 0.01 1.02 2.03 3.25];
y = [17.03 7.24 1.05 2.03 17.06 23.05 ];
x0 = 0.6;
y0=Language(x,y,x0)
(上面语句,在command window中输入即可)
结果:
y0=
0.0201
matlab拉格朗日插值法程序
function f=lang(x,y,x0)
syms p;
n=length(x);
f=0;
for k=1:n
l=y(k);
for j=1:k-1
l=l*(p-x(j))/(x(k)-x(j));
end
for j=k+1:n
l=l*(p-x(j))/(x(k)-x(j));
end
f=f+l;
simplify(f);
end
if(nargin==2)
f=subs(f,'p','x');
f=collect(f);
f=vpa(f,4);
else
m=length(x0);
for i=1:m
temp(i)=subs(f,'p',x0(i));
end
f=temp;
end