for loo内のtrapzのエラーについて
Show older comments
下記のようにfor loop内でtrapzを使用しようとしています.
A = zeros(1,1039);
for i=1:1039
Cum_current(1,i)=trapz(B(1:i,1)',C(1:i,1)');
end
B,Cは1300行*1列のベクトルです
意図としては各試行iでの積分結果をCum_currentのi列目に保存して記録しておきたいというものです.
これを実行すると下記のエラーが表示されます
エラー: trapz (line 47)
次元の引数は、インデックス付け範囲の中で、正の整数のスカラーでなければなりません。
実際にiを1039と定義してtrapzを実行すると計算は回るのですが
for loopにすると上記エラーが発生します.
初歩的な質問かと存じますがご教授いただけますと幸いです.
Accepted Answer
More Answers (1)
浩祐 佐々木
on 25 May 2021
0 votes
1 Comment
Atsushi Ueno
on 25 May 2021
採用ありがとうございます。
- エラー: trapz (line 47) 次元の引数は、インデックス付け範囲の中で、正の整数のスカラーでなければなりません。
- エラー: permute ORDERには無効な置き換えインデックスが含まれています
1番目は「次元:正の整数スカラー」を期待する所に「座標のベクトル」が入力されたのが原因ですが、問題が再現しませんでした。(質問者様の問題が解決したので、めでたしとしましょう)
2番目は「座標のベクトル」を期待する所に「等間隔のスカラー」が入力されたのが原因でした。trapz(1,1)を入力するとエラー無しで答え0を出してしまうtrapz関数の仕様は混乱の元ですね。
Categories
Find more on 数値積分と微分 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!