matlab 定点仿真,加速定点仿真 - MATLAB & Simulink - MathWorks 中国

示例说明

此示例使用一阶反馈回路。它还使用量化器来避免无限的位增长。输出信号被延迟一个采样周期并通过回馈来缓冲输入信号。

2de46162d198c778e118e6c1ed08023a.png

复制必需的文件

您需要此 MATLAB 文件来运行此示例。将其复制到临时目录。此步骤需要具有对系统临时目录的写入访问权限。

tempdirObj = fidemo.fiTempdir('fiaccelbasicsdemo');

fiacceldir = tempdirObj.tempDir;

fiaccelsrc = ...

fullfile(matlabroot,'toolbox','fixedpoint','fidemos','+fidemo','fiaccelFeedback.m');

copyfile(fiaccelsrc,fiacceldir,'f');

检查 MATLAB 反馈函数代码

执行反馈回路的 MATLAB 函数位于文件 fiaccelFeedback.m 中。以下代码将量化输入,并执行反馈回路操作:

type(fullfile(fiacceldir,'fiaccelFeedback.m'))

function [y,w] = fiaccelFeedback(x,a,y,w)

%FIACCELFEEDBACK Quantizer and feedback loop used in FIACCELBASICSDEMO.

% Copyright 1984-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);

end

此函数中使用以下变量:

x 是输入信号向量。

y 是输出信号向量。

a 是反馈增益。

w 是延迟一个单位时间的输出信号。

创建输入信号并初始化变量

rng('default'); % Random number generator

x = fi(2*rand(1000,1)-1,true,16,15); % Input signal

a = fi(.9,true,16,15); % Feedback gain

y = fi(zeros(size(x)),true,16,12); % Initialize output. Fraction length

% is chosen to prevent overflow

w = fi(0,true,16,12); % Initialize delayed output

A = coder.Constant(a); % Declare "a" constant for code

% generation

运行 Normal 模式

tic,

y = fiaccelFeedback(x,a,y,w);

t1 = toc;

编译反馈代码的 MEX 版本

fiaccel fiaccelFeedback -args {x,A,y,w} -o fiaccelFeedback_mex

运行 MEX 版本

tic

y2 = fiaccelFeedback_mex(x,y,w);

t2 = toc;

加速比

代码加速为通过 MEX 文件生成加速定点算法提供优化。Fixed-Point Designer™ 提供了一个方便的函数 fiaccel 来将您的 MATLAB 代码转换为 MEX 函数,这可以大大加快定点算法的执行速度。

r = t1/t2

r =

13.7451

清理临时文件

clear fiaccelFeedback_mex;

tempdirObj.cleanUp;

%#ok

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值