生成墨西哥人代码加速模拟弹球
这个例子展示了如何加速MATLAB®算法执行使用生成的墨西哥人的功能。它使用codegen
命令来生成一个墨西哥人使用多个MATLAB函数为一个复杂的应用程序文件。您可以使用codegen
检查您的MATLAB代码适用于代码生成,在许多情况下,加速你的MATLAB算法。您可以运行墨西哥人函数来检查运行时错误。
先决条件
这个例子没有先决条件。
关于run_balls
函数
的run_balls.m
函数接受一个输入指定数量的弹跳球来模拟。模拟运行时和情节球反弹直到没有精力并返回状态(位置)的球。
类型run_balls
%球= run_balls (n) % ' n '数量的球,直到球来运行模拟%完全停止(或者当系统没有更多的动能)。功能球= run_balls (n) % # codegen coder.extrinsic(“流”);% 2010 - 2013版权MathWorks公司%播种随机数生成器将保证我们得到%完全相同的模拟我们每次调用这个函数。old_settings = rng(1283年,V4);% cdata的变量是一个矩阵代表colordata位图%将呈现在每一个时间步。cdata = 0(400600年,“uint8”);%设置图窗口im = setup_figure_window (cdata);%获得“n”球的初始配置。球= initialize_balls (cdata, n);能量= 2; % Something greater than 1 iteration = 1; while energy > 1 % Clear the bitmap cdata(:,:) = 0; % Apply one iteration of movement [cdata,balls,energy] = step_function(cdata,balls); % Render the current state cdata = draw_balls(cdata, balls); iteration = iteration + 1; if mod(iteration,10) == 0 fprintf(1, 'Iteration %d\n', iteration); end refresh_image(im, cdata); end fprintf(1, 'Completed iterations: %d\n', iteration); % Restore RNG settings. rng(old_settings);
生成墨西哥人的功能
首先,使用命令生成一个墨西哥人的功能codegen
其次是MATLAB文件的名称来编译。通过一个示例输入(args 0
)表明,生成的墨西哥人函数将调用一个double类型的输入。
codegenrun_ballsarg游戏0
代码生成成功。
的run_balls
其他函数调用MATLAB函数,但你只需要指定的入口点函数在调用codegen
。
默认情况下,codegen
生成一个墨西哥人命名函数run_balls_mex
在当前文件夹。这允许您测试MATLAB代码和墨西哥人功能和比较结果。
比较结果
运行时间和原始run_balls
函数函数生成的墨西哥人紧随其后。
抽搐,run_balls (50);t1 = toc;
迭代10迭代20 30 40迭代50迭代60 70 80迭代90迭代100迭代110迭代120迭代130 140 150迭代160迭代170迭代180 190迭代200迭代210 220 230迭代240迭代250迭代260迭代270迭代280完成迭代:281
抽搐,run_balls_mex (50);t2 = toc;
迭代10迭代20 30 40迭代50迭代60 70 80迭代90迭代100迭代110迭代120迭代130 140 150迭代160迭代170迭代180 190迭代200迭代210 220 230迭代240迭代250迭代260迭代270次280
迭代:281年完成
估计加速是:
流(1,加速:x ~ % 2.1 f \ n '、t1 / t2);
加速:x ~ 1.9