3

次のように、data.txt に 2 列の xy データがあります。

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

ここで、x が最初の列で f(x) が 2 番目の列である関数 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

配列内の正しい値を見つけるだけでよい場合 (補間なし) は、次を使用できます。

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 に答える
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 に答える