Interp1 c++实现

Interp1 c++实现在网上找了一下,有是有但是我下载下来用的时候结果不对。想修改一下但是搞得迷迷糊糊的,就干脆写了一个,不过只有最简单的线性插值的实现,新手可以直接拿过去用。也希望老鸟也可以不吝赐教,提高一下效率或者优化下结构。cpp文件//—————————————————————————#pragmahdrstop#include”Interpfun.h”//————————

大家好,又见面了,我是你们的朋友全栈君。

在网上找了一下,有是有但是我下载下来用的时候结果不对。想修改一下但是搞得迷迷糊糊的,就干脆写了一个,不过只有最简单的线性插值的实现,新手可以直接拿过去用。也希望老鸟也可以不吝赐教,提高一下效率或者优化下结构。
cpp文件

//---------------------------------------------------------------------------
#pragma hdrstop
#include "Interpfun.h"
//---------------------------------------------------------------------------
#include"interpfun.h"
Interp::Interp()
{ 

strMethod1 ="lgr";
strMethod2 = "lg3";
strMethod3 = "spl";
}
Interp::~Interp()
{ 

}
double Interp::lgr(double *x,double *y,int n,double t)                  //X原位置Y原数据,n数据长度,t插入位置
{ 

int i,j,m;
double k,z,s;
z= 0.0f;
if(n<1)
{ 

return(z);
}
if(n==1)
{ 

z=y[0];
return(z);
}
if(n==2)
{ 

k=y[1]-y[0]/x[1]-x[0];
z=k*t+y[1]-k*x[1];
return(z);
}
if(n>2){ 

for(i=0;i<n-1;i++){ 

if(x[i]==t){ 

z=y[i];
return(y[i]);
}
if((x[i]<t)&&(x[i+1]>t)){ 

k=(y[i+1]-y[i])/(x[i+1]-x[i]);
z=k*(t-x[i+1])+y[i+1];
return(z);
}
}
return(x[n-1]);
}
}
void Interp::interp_onePoint(double *x,double *y,int n,double t,double *fval,char *method)
{ 

if(method== NULL )
*fval = lgr(x,y,n,t);
else if(strcmpi(method,strMethod1) == 0)
*fval = lgr(x,y,n,t);
else
*fval = lgr(x,y,n,t);
}
void Interp::interp_multiPoint(double *x,double *y,int n,double *t,double *fval,int m,char *method)
{ 

if(t == NULL)
{ 
return;}
double tempVal = 0.0;
for(int k=0;k<m;k++){ 

interp_onePoint(x,y,n,t[k],&tempVal,method);
fval[k] = tempVal;
}
}
#pragma package(smart_init)

h文件

//---------------------------------------------------------------------------
#ifndef InterpfunH
#define InterpfunH
//---------------------------------------------------------------------------
#include"math.h"
#include<stdio.h>
#include <string.h> 
#ifndef SafeDeleteVec
#define SafeDeleteVec(X) { if((X)) delete (X); (X)=NULL;}
#endif
class Interp
{ 

public:
char *strMethod1;
char *strMethod2;
char *strMethod3;
public:
Interp();
~Interp();
/*****以下两个函数为插值函数**/
void interp_onePoint(double *x,double *y,int n,double t,double *fval,char *method);//返回单个点的值
void interp_multiPoint(double *x,double *y,int n,double *t,double *fval,int m,char *method);//返回多个点的值,点的个数为m
private:
//拉格朗日线性插值
double lgr(double *x,double *y,int n,double t);
};
#endif
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/134540.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 好看的table css样式_html漂亮表格效果

    好看的table css样式_html漂亮表格效果<styletype=”text/css”> table{ border-collapse:collapse; table-layout:fixed; border-radius:5px; overflow:hidden; margin:10pxauto; border:2pxsolid#70aefb; background-color:…

  • SpringBoot2+Netty+WebSocket(netty实现websocket,支持URL参数)

    SpringBoot2+Netty+WebSocket(netty实现websocket,支持URL参数)关于NettyNetty是一个利用Java的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的API的客户端/服务器框架。MAVEN依赖 <dependencies> <!–https://mvnrepository.com/artifact/io.netty/netty-all–> <dependency> <g…

  • 经常使用哈希函数的比較及其C语言实现「建议收藏」

    经常使用哈希函数的比較及其C语言实现

  • 阿里云设置DDNS(动态域名解析)

    阿里云设置DDNS(动态域名解析)阿里云设置DDNS(动态域名解析)搭建内网服务器时,因为运营商分配的公网ip地址是动态的。在一段时间后或者重启路光猫后,会导致公网ip变化,此时阿里云设置DNS将失效。因此需要进行动态域名解析。阿里云没有像花生壳一样的内置到路由器的动态域名解析服务。所以,我们没办法在路由器段进行动态域名解析设置。但是,阿里云提供了DNS的API,各个语言的API都有,因此我们可以在服务器端来实现这个动态域名解析服务。下面讲一下我实现的整个过程,我是通过go语言完成的。如下。1.设置DNS域名解析服务进入阿里云的

  • ue4封装接口_ue4导出模型

    ue4封装接口_ue4导出模型原创文章,转载请注明出处。本文带大家认识UE4插件/模块的使用方式Dll。既然为DLL,那么我们就可以对其封装,做到不公开cpp的目的。1>新建一个Plugin2>在plugin中创建一个Actor类,并在里面写一个UE4的Log输出函数。3>对其进行编译,编译出不同模式的dll出来4>在UE4场景中测试我们Log函数5>删除cpp文件6>在我们的.build.cs中添加不参数编译的参数bUsePrecompiled=true;7>再到UE4场景中测试我们L

  • pycharm激活码【注册码】

    pycharm激活码【注册码】,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号