エラーの解決: fimath
の不一致
問題
2 つの fi
オブジェクト オペランドに追加された fimath
がある場合、fimath
は等価でなければなりません。
考えられる解決策
関数 removefimath
を使用して、1 つのインスタンスの変数の 1 つの fimath
を削除します。fimath
を削除すると、変数の fimath
を永久的に変更せずに "fimath
の不一致" エラーを回避します。
元のアルゴリズム | 新しいアルゴリズム |
---|---|
関数: function y = mysum(x,T) %#codegen y = zeros(size(x), 'like', T.y); for n = 1:length(x) y(:) = y + x(n); end end | 関数: function y = mysum(x,T) %#codegen y = zeros(size(x), 'like', T.y); for n = 1:length(x) y(:) = removefimath(y) + x(n); end end |
型テーブル: function T = mytypes(dt) switch(dt) case 'fixed' T.x = fi([],1,16,0, 'RoundingMethod', 'Floor',... 'OverflowAction','Wrap'); T.y = fi([],1,16,0, 'RoundingMethod','Nearest'); end end | 型テーブル: function T = mytypes(dt) switch(dt) case 'fixed' T.x = fi([],1,16,0, 'RoundingMethod','Floor',... 'OverflowAction','Wrap'); T.y = fi([],1,16,0, 'RoundingMethod', 'Nearest'); end end |
参考
removefimath
| fimath
| fi