主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

固定小数点シミュレーションの速度の向上

この例では,関数fiaccelを使用して固定小数点アルゴリズムを高速化する方法を説明します。MATLAB® コードから MEX 関数を生成して実行し、実行速度を MATLAB コード シミュレーションと比較します。

例の説明

この例は1次フィードバックループを使用します。ビットの無限成長を避けるため,量子化器も使用します。出力信号は1サンプリング分だけ遅れ,入力信号を減衰するためにフィードバックされます。

必要なファイルのコピー

この例を実行するには,このMATLABファイルが必要です。このファイルを一時ディレクトリにコピーします。この手順では,システムの一時ディレクトリへの書き込み権限が必要です。

tempdirObj = fidemo.fiTempdir (“fiaccelbasicsdemo”);fiacceldir = tempdirObj.tempDir;fiaccelsrc =...fullfile (matlabroot“工具箱”,“定点”,“fidemos”,' + fidemo ',“fiaccelFeedback.m”);拷贝文件(fiaccelsrc fiacceldir,“f”);

MATLABフィードバック関数コードの検査

フィードバックループを実行するMATLAB関数は,ファイルfiaccelFeedback.m内にあります。このコードは入力を量子化し,フィードバックループ操作を実行します。

类型(fullfile (fiacceldir“fiaccelFeedback.m”))
function [y,w] = fiaccelFeedback(x,a,y,w) % fiaccelFeedback量化器和反馈环路% Copyright 1985 -2013 The MathWorks, Inc. %#codegen for n = 1:length(x) y(n) = quantize(x(n) - a*w, true, 16, 12, 'floor', 'wrap');w = y (n);结束

この関数では,以下の変数が使用されます。

  • xは入力信号ベクトルです。

  • yは出力信号ベクトルです。

  • 一个はフィードバックゲインです。

  • wは単位遅延の出力信号です。

入力信号の作成と変数の初期化

rng (“默认”);%随机数发生器x = fi(2 *兰德(1000 1)1,真的,16日15);%输入信号一个= fi(15)。9,真的,16日;%反馈增益y = fi(0(大小(x)),真的,16日12);%初始化输出。部分长度选择%以防止溢出w = fi(0,真的,16日12);初始化延迟输出= coder.Constant ();为代码声明一个常量%的一代

ノーマルモードの実行

tic, y = fiaccelFeedback(x,a,y,w);t1 = toc;

墨西哥人バージョンのフィードバックコードのビルド

fiaccelfiaccelFeedbackarg游戏{x, y, w}- ofiaccelFeedback_mex

墨西哥人バージョンの実行

tic y2 = fiaccelFeedback_mex(x,y,w);t2 = toc;

高速化の比率

コードの実行速度を向上させるには,墨西哥人ファイルの生成によって固定小数点アルゴリズムを高速化するための最適化を行います。定点设计师™では,MATLABコードを墨西哥人関数に変換できる便利な関数fiaccelを利用できます。これにより,固定小数点アルゴリズムの実行速度を大幅に向上させることができます。

r = t1 / t2
r = 12.7203

一時ファイルのクリーンアップ

清晰的fiaccelFeedback_mex;tempdirObj.cleanUp;% #好< * NOPTS >