数値積分を行う上でIntegralの扱い方
13 次查看(过去 30 天)
显示 更早的评论
上記の積分を実行しようと考え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 个评论
采纳的回答
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
割り算のところで / を使ってしまうと、行列の割り算になります:
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!