>> x=[520,280,1566,78,3962,31,0];
>> x1=[0,31,3962,78,1566,280,520];
>> y=[0,-30,-36,-35,-2844,-94,0];
>> y1=[0,94,2844,35,36,30,0];
>> x2=520:-104:0;
>> y2=spline(x,y,x2);
>> x3=0:104:520;
>> y3=spline(x1,y1,x3);
>> plot(x2,y2,'-',x3,y3,'-')
其实要加入更多的点的话,你只需要把自变量x的范围按要求变化下就好了。但是要注意的就是样条函数的自变量X要求是递增或是递减,所以分成两段来解。
for(2) i think you can use interp( ) or resample( )
pretty easy
just type help in the command window to see the usage
griddata 调用方法:
ZI = griddata(x,y,z,XI,YI)
[XI,YI,ZI] = griddata(x,y,z,XI,YI)
[] = griddata(,method)
[] = griddata(,method,options)
method 的值 为
'cubic' -- 则,以三角形为基础的三次方程内插
'nearest' -- 则,用最邻近的点 内插
'v4'-- -- 则,MATLAB 4 格点样条函数内插
默认'linear' 线性内插
三角形为基础,就是按Delaunay方法先找出内插点四周的3个点,构成三角形,内插点在三角形内。然后线性内插,或三次方程内插。
'cubic' 和 'v4' 插值结果构成的曲面较光滑,'linear'和 'nearest' 插值结果构成的曲面不光滑不连续。
前3种方法具体算法见
[1] Barber, C B, DP Dobkin, and HT Huhdanpaa, "The Quickhull Algorithm for Convex Hulls," ACM Transactions on Mathematical Software, Vol 22, No 4, Dec 1996, p 469-483 Available in PDF format at >
只是抽取和内插吗?需不需要滤波和频域分析?对什么信号进行内插和抽取?
我写了最简单的形式:
内插的:
%interpolation
clear; %清空工作间
N=100; %原采样时间,假设为100s
n=0:1:N-1; %采样率为1s,即每隔1s采一个样
xn=sin(npi/8)+sin(npi/4);%建立等待内插的函数
subplot(2,1,1) %画图
stem(n,xn);xlabel('t');title('x(t)');%画原函数图
yn=interp(xn,7); %直接用MATLAB内插函数进行内插
t=0:1/7:100-1/7; %内插后的采样率,每隔1/7s采一个样
subplot(2,1,2)
stem(t,yn);xlabel('t');title('y(t)');%画内插后函数图
抽取的:
%decimation
clear;
N=100;
n=0:05:N-1; %采样率为05s
xn=sin(npi/8)+sin(npi/4);
subplot(2,1,1)
stem(n,xn);xlabel('t');title('x(t)'); %画原函数图
yn=zeros(1,length(xn)); %先将抽取后的值全设为零
for i=1:5:length(xn); %通过循环,每隔5个点将抽取后的值赋值为原函数的
yn(i)=xn(i); %采样值
end
subplot(2,1,2)
stem(n,yn);xlabel('t');title('y(t)'); %画图
其中,内插是用了MATLAB自带的函数interp进行的,抽取是通过for循环自己做的。
之前我一般是把sqlite的数据导出到excel里面,然后把数据复制到matlab里面再跑算法的。
感觉有点低效,所以最近两天安装了一个sqlite驱动,用matlab打开db文件,读出数据之后直接跑算法。
以上就是关于求教:matlab样条插值内插的程序全部的内容,包括:求教:matlab样条插值内插的程序、序列抽取和内插的MATLAB实现、matlab中的插值函数 griddata的具体原理是什么呢可否大概讲解一下!!!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)