3

我在 data.txt 中有 2 列 xy 数据,如下所示:

0  0
1  1
2  4
3  9
4  16
5  25

现在我想定义一个函数 f(x),其中 x 是第一列, f(x) 是第二列,然后能够像这样打印这个函数的值:

f(2)

哪个应该给我4。

我如何实现这一目标?

4

3 回答 3

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);
于 2012-07-19T10:42:15.927 回答
0

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

在我的脑海中,未经测试:

function y = findinfile(x)
    m = textread(data.txt)
    ind = find(m(:,1)==x)
    y = m(ind,2)
end
于 2012-07-19T10:45:31.513 回答
0

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

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);
于 2012-07-19T10:52:30.540 回答