interp_1D函数:一维线性插值
摘要:该MATLAB函数interp_1D实现一维线性插值功能。首先检查输入点数组和值数组的维度一致性并统一转换为列向量。通过遍历查找给定点是否与查找表(LUT)中的点匹配,若未找到则进行线性插值计算:确定相邻上下界点,按比例计算插值结果。还处理了超出LUT范围的情况,直接返回边界值。函数支持非均匀间隔的输入点,并包含零斜率情况的特殊处理。
matlab
function out = interp_1D(point,lut_ponit,lut_value)
% 查找当前绑点point对应的线性插值
% V1_20251202
%判断维度是都一致
[V,H,~]=size(lut_ponit);
[v,h,~]=size(lut_value);
num_1=max(V,H);
num_2=max(v,h);
if num_1~=num_2
disp('数组大小不一致')
end
num=num_2;
if H>V
lut_ponit=lut_ponit';
end
if h>v
lut_value=lut_value';
end
%都转换成竖向的表格
%检查point是否和LUT列表数值某一个一样
for i=1:num
if point==lut_ponit(i)
out=lut_value(i);
end
end
%筛选上下绑点
for i=1:num-1
if point>lut_ponit(i) && point<lut_ponit(i+1)
if (lut_value(i+1)-lut_value(i))~=0
out=lut_value(i)+(point-lut_ponit(i))*(lut_value(i+1)-lut_value(i)) / (lut_ponit(i+1)-lut_ponit(i));
else
out=lut_value(i);
end
end
if point>lut_ponit(num)
out=lut_value(num);
end
end