MATLAB関数内での定積分について

13 views (last 30 days)
笹沼 燎矢
笹沼 燎矢 on 12 Oct 2021
Commented: 笹沼 燎矢 on 12 Oct 2021
MATLAB関数の引数(uとpdn)を用いて定積分を行いたいのですが、添付した写真のようなエラーが出てしまいます。このエラーを解消して正しい結果を出力するためにはどうすれば良いでしょうか。
・MATLAB関数内のコード
function y = fcn(u, t, pdn)
w_zero=0.1;
D_zero=5;
D_t=2*sin(w_zero*t)+D_zero;
syms u pdn
F=int(u*pdn,t-D_t,t);
y = F;
・エラーメッセージ
関数 'syms' はコード生成でサポートされていません。 関数 'Subsystem/MATLAB Function' (#50.80.91)、行 7、列 1: "syms u pdn" 診断レポートを起動してください。
コンポーネント:MATLAB Function | カテゴリ:Coder エラー
'int' の呼び出し中にエラーが発生しました。この呼び出しサイトは、受け入れ可能な数を超えた入力をこの関数に渡します。 関数 'Subsystem/MATLAB Function' (#50.93.111)、行 8、列 3: "int(u*pdn,t-D_t,t)" 診断レポートを起動してください。
コンポーネント:MATLAB Function | カテゴリ:Coder エラー
関数または変数 'F' が未定義です。ローカル変数への 1 番目の代入は、そのクラスを特定します。 関数 'Subsystem/MATLAB Function' (#50.117.118)、行 9、列 5: "F" 診断レポートを起動してください。
コンポーネント:MATLAB Function | カテゴリ:Coder エラー
・実行したい積分
 区間:[t-D(t) t]
 数式:int(U(σ)/φ'(φ^-1(σ)))dσ
ブロック線図内ではu=U(σ), pdn=1/φ'(φ^-1(σ))を指しています。

Answers (1)

Hernia Baby
Hernia Baby on 12 Oct 2021
symsがどうもダメみたいですね 数値積分の integralはどうでしょうか?
  1 Comment
笹沼 燎矢
笹沼 燎矢 on 12 Oct 2021
返信して頂き、ありがとうございます。以下のような修正を施しましたが、再びエラーが出てしまいました。
・修正したコード
function y = fcn(u, t, pdn)
w_zero=0.1;
D_zero=5;
D_t=2*sin(w_zero*t)+D_zero;
F=integral(u*pdn,t-D_t,t);
y = F;
・エラーメッセージ
関数 'integral' はコード生成でサポートされていません。 関数 'Subsystem/MATLAB Function' (#69.82.105)、行 7、列 3: "integral(u*pdn,t-D_t,t)" 診断レポートを起動してください。
コンポーネント:MATLAB Function | カテゴリ:Coder エラー
関数または変数 'F' が未定義です。ローカル変数への 1 番目の代入は、そのクラスを特定します。 関数 'Subsystem/MATLAB Function' (#69.111.112)、行 8、列 5: "F" 診断レポートを起動してください。
コンポーネント:MATLAB Function | カテゴリ:Coder エラー
MATLAB 関数 'esc_nonlinear_continuoustime/Subsystem/MATLAB Function' の解析中にエラーが発生しました
コンポーネント:MATLAB Function | カテゴリ:Coder エラー
Simulink はブロック本体でのエラーのため、または基になる解析の制限のため、ブロック 'esc_nonlinear_continuoustime/Subsystem/MATLAB Function' の出力のサイズ、タイプ、あるいはその両方を判別できません。このエラーは不正確である可能性があります。示されたエラーを修正するか、すべてのブロック出力についてサイズ、タイプ、またはその両方を明示的に指定してください。
コンポーネント:MATLAB Function | カテゴリ:Coder エラー
Simulink はブロック本体でのエラーのため、または基になる解析の制限のため、ブロック 'esc_nonlinear_continuoustime/Subsystem/MATLAB Function' の出力のサイズ、タイプ、あるいはその両方を判別できません。このエラーは不正確である可能性があります。示されたエラーを修正するか、すべてのブロック出力についてサイズ、タイプ、またはその両方を明示的に指定してください。
コンポーネント:Simulink | カテゴリ:Model エラー
端子幅または次元におけるエラー。入力 'u' に指定されている次元が無効です。
コンポーネント:Simulink | カテゴリ:Model エラー

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!