2017-01-08 11 views
0

私はmatlabで新しくなった。matlabでこの関数を統合する方法

このコードはどのように統合できますか? ?

p2= polyfit(x,y,length(x)); 
from= x(1); 
to= x(length(x)); 

p2の統合が必要です。

私は統合機能で多くのことを試してみました:

value = integral(p2,from,to); 

が、私は、積分(ライン82)まず、入力引数が関数 ハンドルでなければなりません使用して

エラーを得ました。ある

Error in poly_integral (line 5) 
value = integral(p2,from,to); 
+0

で関数 'y'を渡します「y」の係数よりも – scrappedcola

答えて

0

p2ので、あなたのコードでは、関数ではありません。それは係数のベクトルに過ぎません。 integralの最初の引数は、統合する関数のハンドルである必要があります。

コードから判断すると、多項式p2を評価する関数を定義すると思われます。もしそうなら、あなたは以下の例のような何かを行うことができます:

% take an example set of x and y 
x = linspace(0, pi, 1000); % uniform samples between 0 to pi 
y = sin(x); % assume, for sake of example, output is sine function of input 

% polynomial fit 
p2 = polyfit(x,y,4); % 4th order polynomial 
% Note that, in general, the order should be much smaller than length(x). 
% So you probably should review this part of your code as well. 

% define a function to evaluate the polynomial 
fn = @(x) polyval(p2, x); 
% this means: fn(x0) is same as polyval(p2, x0) 

% compute integral 
value = integral(fn,x(1),x(end)); 
+0

ありがとう、もう1つあなたが言った - は長さ(x)よりずっと小さくなければなりません。 実際に私たちの教師の命令として: 次数nの多項式にデータを当てはめます。ここでnはxの要素の数です。 彼は何か他のことを意味しましたか、彼は間違っている可能性がありますか? – programmer

+0

@programmer: 'n = length(x)'とすると、選択した 'y 'に関係なく、' n-1'の多項式で 'fn(x)'と 'y'の間の正確な適合を得るのに十分です。 。ですから、私の意見では、度数n以上の多項式に適合する正当な理由はありません(実験を除いて、そうかもしれません)。 – aksadv

0

をあなたは多項式の正確な統合のための多項式係数を取得するためにpolyint機能を使用することができます。

p2 = polyfit(x,y,length(x)); 
int = diff(polyval(polyint(p2),x([1 end]))); 
関連する問題