解决错误:不匹配的 fimath
问题
如果两个 fi 对象操作数具有关联的 fimath,则 fimath 必须相等。
可能的解决方案
使用 removefimath 函数仅在一个实例中删除变量之一的 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