KIPL_Bsval
计算basis样条拟合函数在位置x处的值。
接口定义
float KIPL_Bsval(float xi, int k, float *xKnot, int ncoef, float *coef)
参数
参数名 |
类型 |
描述 |
输入/输出 |
|---|---|---|---|
xi |
单精度浮点数 |
需要计算拟合值的位置。 |
输入 |
ncoef |
整型数 |
表示coef数组长度,与nData相等。 |
输入 |
k |
整型数 |
表示样条的阶数。 |
输入 |
xKnot |
单精度浮点数组 |
长度为nData+k的数组,表示KIPL_Bsnak生成的节点序列。 |
输入 |
coef |
单精度浮点数组 |
长度为nData的数组,表示生成的系数序列。 |
输入 |
返回值 |
单精度浮点数 |
basis样条拟合函数在位置x处的值。 |
输出 |
依赖
#include "kipl.h"
示例
#include <stdio.h>
#include <math.h>
#include "kipl.h"
int main()
{
int data_n = 11;
float data_x[data_n];
float data_y[data_n];
for (int i = 0; i < data_n; i++) {
data_x[i] = (float)(i) / (data_n - 1);
data_y[i] = sin(15.0 * data_x[i]);
}
int test_n = 2 * data_n - 1;
float test_x[test_n];
float test_y[test_n];
for (int i = 0; i < test_n; i++) {
test_x[i] = (float)(i) / (test_n - 1);
test_y[i] = sin(15.0 * test_x[i]);
}
int k = 3;
float bscoef[data_n], xknot[data_n + k];
KIPL_Bsnak(data_n, data_x, k, xknot);
KIPL_Bsint(data_n, data_x, data_y, k, xknot, bscoef);
for (int i = 0; i < test_n; i++) {
float y;
float x = test_x[i];
y = KIPL_Bsval(x, k, xknot, data_n, bscoef);
}
return 0;
}
父主题: basis样条函数