主要内容

解决错误:不匹配的 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

另请参阅

| |