数値積分を行う上でIntegralの扱い方

13 vues (au cours des 30 derniers jours)
O.E
O.E le 24 Oct 2017
Commenté : O.E le 26 Oct 2017
上記の積分を実行しようと考えsをi*2*pi*xとしてintegralを用い、以下のコードを作成いたしました。
Sp=2^17; %サンプル点数
Ts=1; %サンプリング周期
OSR=16; %オーバーサンプリングレーシオ
fb=(1/Ts)/(2*OSR);
A=0.8;
k1=1;
k2=1;
k3=1;
Q=abs(1/(4*sqrt(12)))^2;
ntf = @(x) abs(((1i*2*pi*x).^3)/((1i*2*pi*x).^3+k1*(1i*2*pi*x).^2+k2*(1i*2*pi*x)+k3)).^2;
q = integral(ntf,0,fb);
コードを実行したところ
エラー: integralCalc/finalInputChecks (line 515)
関数の出力は、入力と同じサイズでなければなりません。FUN が配列値の被積分関数である場合は、'ArrayValued' オプションを true に設定してください。
エラー: integralCalc/iterateScalarValued (line 315)
finalInputChecks(x,fx);
エラー: integralCalc/vadapt (line 132)
[q,errbnd] = iterateScalarValued(u,tinterval,pathlen);
エラー: integralCalc (line 75)
[q,errbnd] = vadapt(@AtoBInvTransform,interval);
エラー: integral (line 88)
Q = integralCalc(fun,a,b,opstruct);
エラー: ideal_snr (line 15)
q = integral(ntf,0,fb);
といったエラーが発生してしまったのですが、エラーの意味がよく分からず困っています。
これはどういった問題でエラーが発生しているのでしょうか。

Réponse acceptée

Teja Muppirala
Teja Muppirala le 24 Oct 2017
割り算のところで / を使っていますが、それに点をつけて  ./  にする必要があります。
ntf = @(x) abs(((1i*2*pi*x).^3)./((1i*2*pi*x).^3+k1*(1i*2*pi*x).^2+k2*(1i*2*pi*x)+k3)).^2;
q = integral(ntf,0,fb);
そうすると:
  q =
2.6399e-07
割り算のところで / を使ってしまうと、行列の割り算になります:
要素ごとの割り算は " ./ " です。 https://jp.mathworks.com/help/matlab/ref/rdivide.html
  1 commentaire
O.E
O.E le 26 Oct 2017
返答、ありがとうございました。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur 数値積分と微分方程式 dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!