Ошибка твердости: несовпадающий fimath

Проблема

Если два fi объектные операнды имеют присоединенный fimath, fimaths должен быть равным.

Возможные решения

Используйте 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

Смотрите также

| |