Matlab 将函数定义为x、y数据的插值

Matlab 将函数定义为x、y数据的插值,matlab,function,spatial-interpolation,Matlab,Function,Spatial Interpolation,我在data.txt中有两列x y数据,如下所示: 0 0 1 1 2 4 3 9 4 16 5 25 现在我想定义一个函数f(x),其中x是第一列,f(x)是第二列,然后可以这样打印这个函数的值: f(2) 这应该给我4分 如何实现这一点?假设您希望在作为参考的数字之间获得一些返回值,可以使用线性插值: function y= linearLut(x) xl = [0 1 2 3 4 5]; yl = [0 1 4 9 16 25];

我在data.txt中有两列x y数据,如下所示:

0  0
1  1
2  4
3  9
4  16
5  25
现在我想定义一个函数f(x),其中x是第一列,f(x)是第二列,然后可以这样打印这个函数的值:

f(2)
这应该给我4分


如何实现这一点?

假设您希望在作为参考的数字之间获得一些返回值,可以使用线性插值:

    function y= linearLut(x)
         xl = [0 1 2 3 4 5];
         yl = [0 1 4 9 16 25];
         y = interp1(xl,yl,x);
    end
该函数的更通用版本可能是:

    function y= linearLut(xl,yl,x)
         y = interp1(xl,yl,x);
    end
然后,您可以使用匿名函数创建特定实例:

    f = @(x)(linearLut([0 1 2 3 4],[0 1 4 9 16],x));
    f(4);

您可以使用
textread()
导入文件,然后使用
find
选择正确的行

从我的头脑中,未经测试:

function y = findinfile(x)
    m = textread(data.txt)
    ind = find(m(:,1)==x)
    y = m(ind,2)
end

如果只需要在数组中找到正确的值(无插值),可以使用:

function out=ff(b)
  a = [0 1 2 3 4 5 ; 3 4 5 6 7 8]';
  [c,d]=find(a(:,1)==b);
  out = a(c,2);

最上面的一个是我想要的,但是当我尝试它时,它给了我一个错误:| |和&&运算符的操作数必须转换为逻辑标量值。如果l<1 | | | r<1 | | | |截止1测试中的错误2>linearlut(第10行)y=interp(xl,yl,x);test2(第3行)linearlut(1)Aha中的错误,通过将“interp”替换为“interp1”修复了该错误。更新答案,我会把它标记为接受,谢谢你的错误,我的答案太仓促了:)