Main Content

エラーの解決: 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

参考

| |