2

(x1, y1)との 2 つのデータ ポイントを受け取る関数を作成したいと考えています(x2, y2)

f次に、点と点の間の直線であるfunction を返したいと思いNます。

2 つのデータ ポイントの x 座標と y 座標を取得すると、次のことができます。

step_size = (x2 - x1) / N;
range = x1:step_size:x2;

その後:

f = ((y2 - y1)/(x2 - x1)) * range + ((y1/x1) * ((x2 - x1)/(y2 - y1)));

これで十分ですか?

さらに、私はオンラインで検索してきましたが、これを行う機能を既に見つけることができませんでした。しかし、もしあれば、アドバイスしてください。

4

2 に答える 2

2

を探していlinspaceます。たとえば、次のように定義します。

x1 = 0; y1 = 0; x2 = 4; y2 = 4; npoints=6;

それから

[linspace(x(1),y(1),npoints);linspace(x(2),y(2),npoints)]

次のように評価されます。

ans =

         0    0.8000    1.6000    2.4000    3.2000    4.0000
         0    0.8000    1.6000    2.4000    3.2000    4.0000

それはおそらくあなたが望むものではないでしょうが、残りは理解できると思います.

さらに、入力edit linspace.mすると、おそらく 2 要素ベクトルで動作する独自のバージョンを作成する場合に、関数がどのように実装されているかを確認できます。

于 2012-11-03T13:05:49.963 に答える
1

行を作成するために別の関数を返す関数が必要な場合は、無名関数を見てください。

function fun = makelinefun(x1,y1,x2,y2)
    fun  = @(N) [linspace(x1,x2,N) ; linspace(y1,y2,N)];
end

次のように使用します。

f = makelinefun(0,0,6,9);
xy = f(4)

  xy =
      0     2     4     6
      0     3     6     9

複数の出力引数を持つ OR :

function fun  = makelinefun(x1,y1,x2,y2)
    fun  = @(N) deal(linspace(x1,x2,N), linspace(y1,y2,N));
end

次のように使用します。

f = makelinefun(0,0,6,9);
[x,y] = f(4)

  x =
      0     2     4     6
  y =
      0     3     6     9
于 2012-11-03T17:11:25.133 に答える