필터 지우기
필터 지우기

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

조회 수: 22 (최근 30일)
O.E
O.E 2017년 10월 24일
댓글: O.E 2017년 10월 26일
上記の積分を実行しようと考え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);
といったエラーが発生してしまったのですが、エラーの意味がよく分からず困っています。
これはどういった問題でエラーが発生しているのでしょうか。

채택된 답변

Teja Muppirala
Teja Muppirala 2017년 10월 24일
割り算のところで / を使っていますが、それに点をつけて  ./  にする必要があります。
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
O.E
O.E 2017년 10월 26일
返答、ありがとうございました。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 数値積分と微分方程式에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!