无聊中,发一个随机分形插值的代码,需要的同志们拿去。原创

BORLANDSUN BORLANDSUN 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
搞随机分形插值的同志们会用到,需要请收藏,谢谢。
说明:函数用于给一维数据插值,DataIn为待插数据,Dim为待插数据长度,H为Hurst指数,Var为插值方差,Level为插值级数(Level级插值后总的点数为(2^(Level-1))*(Dim-1)+1),DataOut为插值后的数据。

#include "math.h"
#include "Math.hpp"
bool MFIInterpolation(double* DataIn, int Dim, double H, double Var, int Level, double* DataOut)
{
if(Dim > 1)
{
// 1. 初始化数据
int Max = pow(2, Level)*(Dim-1);
int L = pow(2, Level); // 初始插值步间隔
for(int i=0; i<Dim; i++) // 埴充插值点
{
DataOut[i*L] = DataIn[i];
}

// 2. 插值
for(int p=0; p<Level; p++)
{
int count = pow(2, p)*(Dim-1); // 每行插值点数量
double Scale = pow(1-pow(2, 2*H-2), 0.5);
for(int i=0; i<=p; i++)
{
Scale *= 1/pow(2, H);
}
for(int i=0; i<count; i++)
{
double D = Scale * RandG(0, Var);
int temp1 = (i+0.5)*L;
DataOut[temp1] = (DataOut[i*L] + DataOut[(i+1)*L])/2 + D;
}
L /= 2;
}
return true;
}
else
{
return false;
}
}

使用示例:

double In[3];
In[0] = 0;
In[1] = 80;
In[2] = 150;
Level = 8;
double Out[513]; // 8级插值后总的点数为(2^(Level-1))*(3-1)+1=513
MFIInterpolation(In, 3, 0.6, 100, Level, Out);
...全文

相关推荐

基于matlab的分形插值程序(二维和三维都有)

基于matlab的二维和三维曲面分形插值

胡侃有料

探索分形插值:MATLAB实践与应用

分形插值是一种利用分形理论进行数据插值的方法,通过在数据点之间构造一种具有自相似性质的连续函数,达到提高数据处理精度的目的。相较于传统的线性或多项式插值,分形插值能够更有效地模拟复杂的自然现象和数据结构。分形是一个几何形状,它在局部和整体上具有相似的结构特征。这种相似性通过自相似性质来定义,即在不同的尺度下,形状的各个部分是整个形状的缩小版。在数学上,分形通常是由迭代函数系统(Iterated Function Systems,简称IFS)生成,或者是通过递归过程定义的复杂几何结构。

good2know

【图像处理】分形插值算法调换图片【含Matlab源码 197期】

分形插值算法调换图片 完整的代码,方可运行;可提供运行操作视频!适合小白!

Matlab领域

分形插值的matlab程序-分形插值曲面的MATLAB程序.pdf

分形插值的matlab程序-分形插值曲面的MATLAB程序.pdf 传统的插值方法, 在相邻的两个信息点之间只能插出直线或者光滑曲线, 而分形插值运用自仿射原 理, 在两个信息点之间可以得到各种波状起伏的折线, 这对于模拟粗糙表面具有更高的精度。 给出的分形插值曲面是严格自仿射的, 而自然界中很多物体和现象具有统计自相似特征, 或者具有 多重分形的特征, 因此在进行分形插值模拟的过程中, 还需考虑插值领域的确定与压缩比的选择[4]

weixin_39840387

Fractal-interpolation.zip_分形函数_分形插值_分形插值 matlab_分形插值matlab

构造分形插值函数,对数据点集分形插值。并且可以自定义迭代次数与插值比例。

我虽横行却不霸道
评论 6
收藏 已收藏
分享
返回顶部
BORLANDSUN
C++ Builder 13,871 成员 102,696 内容