C++实现反距离插值
来源:互联网 发布:淘宝国棉一厂 编辑:程序博客网 时间:2024/06/05 20:05
反距离插值C++实现
/*
测试数据70 140 115.4
115 115 123.1
150 150 113.8
110 170 110.5
90 190 107.2
180 210 131.78
110 150
所求值应为114.946
*/
#include <iostream>
#include <cmath>
using namespace std;
struct point
{
double x;
double y;
double z;
double weight;//权重
double distance; //距离插值点的距离
};
const int r = 1; //反距离的幂值(0.5到3均可)
int n = 0; //点的个数
point p[50]; //存放离散点
point q; //插值点
void Distance() //计算未知点到所有点的距离
{
for(int i = 0; i < n; ++i)
p[i].distance = sqrt((q.x-p[i].x)*(q.x-p[i].x) + (q.y-p[i].y) *(q.y-p[i].y));
}
void Weight() //计算权重
{
double f = 0;
int i = 0;
for(i = 0; i < n; ++i)
f += pow(1.0 / p[i].distance, r);
for(i = 0; i < n; ++i)
p[i].weight = pow(1.0 / p[i].distance, r) / f;
}
void Getval() //得到插值点的权重
{
q.weight = 0;
for(int i = 0; i < n; ++i)
q.z += p[i].weight * p[i].z;
}
int main()
{
cout << "请输入已知点的个数" << endl;
cin >> n;
cout << "请输入已知点的坐标" << endl;
for(int i = 0; i < n; ++i)
cin >> p[i].x >> p[i].y >> p[i].z;
cout << "输入目标点的坐标" << endl;
cin >> q.x >> q.y;
Distance();
Weight();
Getval();
cout << q.z << endl;
return 0;
}
阅读全文
0 0
- C++实现反距离插值
- 反距离加权插值方法——C#实现
- ImageWarping--反距离加权插值(IDW)方法实现及报告
- 反距离插值(Inverse Distance Weighted)
- Three.js 中利用反距离权重插值模拟
- IDW Spatial Analyst(ESRI.ArcGIS.SpatialAnalystTools)ArcEngine中反距离加权插值方法
- ArcGIS空间插值方法反距离权重法(IDW)的工作原理
- caffe系列:deeplab中的插值网络层前传和反传的实现分析
- 利用反距离权重插值法实现等值线
- 图像插值算法的C语言实现
- 牛顿插值函数C语言程序实现
- AKima 插值实现
- 单链表的头插、中插、尾插、删除、逆序、显示(C语言实现)
- 直插排序(C语言实现)
- 四元数实现插值动画
- Camera 如何实现插值
- Camera 如何实现插值
- slerp插值的实现
- 集成算法与泰坦尼克
- VC++6.0完美支持xp,win7,win8,win10
- Apache POI HSSF读写Excel总结
- <Qt>实例:视频播放器
- 【codevs 2194】N皇后
- C++实现反距离插值
- 聊聊netstat命令
- 51nod-17-10-29
- spark streaming从指定offset处消费Kafka数据
- pip install 报错 SyntaxError:invalid syntax
- 费马小定理及MR素数判断
- 51nod 1447 好记的字符串 状压dp
- 第三章 求1!+1/2!+1/3!+1/4!+....的前20项和
- 时间和空间复杂度<二>