0

次のコードがあります。

f1_p1 = @(xq1) interp1(x_j1,p1,xq1);
f2_p1 = @(xq2) interp1(x_j2,p1,xq2);
new_p1x1 = @(xq1,xq2) f1_p1(xq1).*f2_p1(xq2);

簡単にプロットするf1_p1には、次のようにします。f2_p2

fplot(f1_p1, [30,70])

私の質問

2 番目の関数 ( ) をプロットするにはどうすればよいnew_p1x1ですか? 以前と同じことを試しましたが、うまくいきません....( fplot(new_p1x1, [30,70]))

Error using @(xq1,xq2)f1_p1(xq1).*f2_p1(xq2)
Not enough input arguments.

ご協力いただきありがとうございます!!!

4

1 に答える 1

1

使用時

fplot(new_p1x1, [30,70])

[30,70]は 1x2 行列と見なされるため、引数は 1 つだけですが、new_p1x1には 2 つ必要です。したがって、どちらかを呼び出すことができます

new_p1x1(30, 70) # 30 is passed to f1_p1 and 70 to f2_p2

また

new_p1x1([30,70], [30,70]) # The matrix [30,70] is passed to both function.

どちらのソリューションがあなたにとってより役立つかはわかりません。それはあなたが何をしたいかによって異なります。

ただし、 fplot は1つの引数を持つ関数のみを受け入れるようです。そのため、3D プロット関数のいずれかを使用する必要があるようです。

3D プロットの場合、たとえば を使用できますsurf

[x1,~] = fplot(f1_p1, [30,70]); % Returns a useful number of x-values for f1
[x2,~] = fplot(f2_p1, [30,70]); % Returns a useful number of x-values for f2

[X,Y] = meshgrid(x1,x2);

surf(x1,x2,new_p1x1(X,Y)); % x1 (X) is passed to f1, x2 (Y) is passed to f2
于 2014-10-18T17:55:25.103 に答える