MATLAB Answers

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

29 views (last 30 days)
O.E
O.E on 24 Oct 2017
Commented: O.E on 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);
といったエラーが発生してしまったのですが、エラーの意味がよく分からず困っています。
これはどういった問題でエラーが発生しているのでしょうか。

  0 Comments

Sign in to comment.

Accepted Answer

Teja Muppirala
Teja Muppirala on 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 Comment

O.E
O.E on 26 Oct 2017
返答、ありがとうございました。

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!