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

12 Ansichten (letzte 30 Tage)
O.E
O.E am 24 Okt. 2017
Kommentiert: O.E am 26 Okt. 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);
といったエラーが発生してしまったのですが、エラーの意味がよく分からず困っています。
これはどういった問題でエラーが発生しているのでしょうか。

Akzeptierte Antwort

Teja Muppirala
Teja Muppirala am 24 Okt. 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 Kommentar
O.E
O.E am 26 Okt. 2017
返答、ありがとうございました。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu 数値積分と微分方程式 finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!