高分悬赏 求三维数据点C语言插值计算程序

高分悬赏 求三维数据点C语言插值计算程序,第1张

问题补充,因字数限制,挪到这

1拉格朗日插值简介:

对给定的n个插值节点x1,x2,…,xn,及其对应的函数值y1=f(x1), y2=f(x2),…, yn=f(xn);使用拉格朗日插值公式,计算在x点处的对应的函数值f(x);

2一维拉格朗日插值c语言程序:

Int lagrange(x0, y0, n, x, y)

Float xo[], yo[], x;

Int n;

Float y

{

Int i, j;

Float p;

y=0;

If (n>1)

{

For(i=0;i<n;i++)

{

P=1;

For(j=1;j<n;j++)

{

If(i!=J)

P=p(x-x0[j]/x0[i]-x0[j]);

}

y=y+py0[i];

Return(0);

}

Else

Return(-1);

}

3例题。已知函数如下表所示,求x=0472处的函数值:

X 046 047 048 049

Y 0484655 04903745 0502750 0511668

计算这个问题的c语言程序如下:

#minclude stdio

#includeM<nathh>

Main()

{

Float x0[4]={ 046, 047,048,049};

Float y0[4]={ 0484655 ,04903745 ,0502750 ,0511668};

Float x, y;

Int n, rtn;

N=4;

X=0472;

Rth=lagrange(x0,y0,n,x,&y);

If(rtn=0)

{

Prinf(“Y(0472)=:%f\n”,y);

}

Else

{

Prinf(“n must be larger than 1\n”);

}

}

计算结果:Y(0472)=:0495553

4问题补充

我的问题与上面的例子类似,计算三维空间一点(x,y,z)对应的函数值(Vx,Vy,Vz)不同的是自变量(point_coordinatetxt)为三维空间散乱点(不是正方体的顶点),因变量(point_datatxt)为矢量(向量 )。插值算法比较多,常数法,拉格朗日插值,埃特金插值,三阶样条插值等。最简单的就是常数法,查找离目标点(x,y,z)距离最近的已知自变量(Xi,Yi,Zi),把该点的函数值赋给目标点做函数值,求高手帮忙写写。

使用Lagrange 插值多项式的方法:

首先把下面的代码复制到M文件中,保存成lagran

function [C,L]=lagran(X,Y)

% input - X is a vector that contains a list of abscissas

% - Y is a vector that contains a list of ordinates

% output - C is a matrix that contains the coefficients of the lagrange interpolatory polynomial

%- L is a matrix that contains the lagrange coefficients polynomial

w=length(X);

n=w-1;

L=zeros(w,w);

for k=1:n+1

V=1;

for j=1:n+1

if k~=j

V=conv(V,poly(X(j)))/(X(k)-X(j));

end

end

L(k,:)=V;

end

C=YL;

然后在命令窗口中输入以下内容:

x=[0 025 05 075 1];

y=[0 03104 06177 07886 1];

lagran(x,y)

ans =

33088 -63851 33164 07599 0

得到的数据就是多项式各项的系数,注意最后一个是常数项,即x^0,

所以表达式为:f=33088x^4-63851x^3+33164x^2 +07599x

求面积就是积分求解

>> f=@(x)33088x^4-63851x^3+33164x^2 +07599x;

>> quad(f,0,1)

ans =

05509

这些点肯定是通过这个多项式的!

这个可以调用我的函数[x,y]=crosspt(x1,y1,x2,y2)

这里x1,y1,x2,y2分别是两条曲线的横纵坐标值。得到的x,y分别是交点坐标。

你的例子:

clear; clc;

n1=150; % core refractive index

n2=148; % clading refractive index

a1=415; % core radius=415microm

a2=625; % cladding radius=625microm

nama=155; % imput wavelength=155microm

pfcri=sqrt(n1^2-n2^2); 

V1=2pi/nama;

V=V1a1pfcri;

ncoeff=(n2:0001:n1)';

b=(ncoeff^2-n2^2)/(pfcri^2);

x=Vsqrt(1-b);

x1=Vsqrt(b);

y_0=besselj(0,x); %零阶

y_1=besselj(1,x); %一阶 

y_01=besselk(0,x1); %零阶

y_11=besselk(1,x1); %一阶 

yl=xy_0/y_1;

yr=x1y_01/y_11;

axis([n2,n1,-50,50]);

plot(ncoeff,yl,'r',ncoeff,yr,'b');grid on;

xlabel('core effective refractive index');

% 寻找数值上的交点

[x,y]=crosspt(ncoeff,yl,ncoeff,yr);

text(x,y,'o','HorizontalAlignment','center','color','k')

text(x,y,[' ','(',num2str(x),',',num2str(y),')'],'color','k')

最后得到的结果:

当然也可以求出多个交点,下面给出我的例子:

clc

clear

x=0:001:5pi;

y1=8sin(x);

y2=6cos(x);

plot(x,y1,'r--',x,y2,'b-')

[xx,yy]=crosspt(x,y1,x,y2);

for i=1:length(xx)

    text(xx(i),yy(i),'o','HorizontalAlignment','center','color','k')

    text(xx(i),yy(i),[' ','(',num2str(xx(i)),',',num2str(yy(i)),')'],'color','k')

end

五个点都求出来了。

记住把我的crossptp文件放在你的当前文件夹里面

分类: 休闲/爱好 >> 摄影摄像

问题描述:

为什么有很多摄相头的介绍写着210W象素(插值)、130W象素(插值)什么的,谁能解释一下插值的含义?

解析:

插值”最初是电脑的术语,后来引用到数码图像上来。图像放大时,像素也相应地增加,但这些增加的像素从何而来?“插值”程序会自动选择信息较好的像素作为增加的像素,而并非只使用临近的像素,所以在放大图像时,图像看上去会比较平滑、干净――但必须注意的是插值并不能增加图像信息。例如:一张照片中,人因为距离比较远,在照片上只有一个白点,但当图像插值放大时,这个人还是白点,只是比以前稍微大了些。

在市场上我们所常见的摄像头像素一般都是30万或者35万像素的,而有的商家往往会说自己的产品可以达到插值120万 像素,这又是怎么一回事呢?其实,这些摄像头是使用了软件插值算出来的,简单的说就是将640X480的拉大到1024X7 68,然后再利用软件计算分辨率点之间的色彩区别,把中间拉大的部分填入软件计算的颜色。这样做虽然输出的大了,但是图 像的质量并没有真正的提高,甚至还有可能严重失真。

接着你的代码往下写:

[x1,y1]=meshgrid(-2:01:2);

z1 = interp2(x,y,Z,x1,y1);

figure;

surf(x1,y1,z1);

用拉格朗日插值做y=1/(1+x^2);本来就有很大的偏差,你的插值函数没写错

这是我做过的一个y=1/(1+25x^2)的图像 ,这里取得是11点,你的应该是5点的吧。你的做完是这种么。这样没错,插值法不适合太多点,想做多点的用的是分段插值。你应该是在学计算方法的课程吧,后边就会讲的。

以上就是关于高分悬赏 求三维数据点C语言插值计算程序全部的内容,包括:高分悬赏 求三维数据点C语言插值计算程序、求一段matlab插值程序、请问如何在下面的Matlab程序中做插值处理,得到图中红线和蓝线交点位置的坐标呢 请熟悉的Matlab高手指点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9625387.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存