主要内容

生成墨西哥人代码加速模拟弹球

这个例子展示了如何加速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;

图MATLAB编码器弹跳球包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

迭代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

图MATLAB编码器弹跳球包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

迭代:281年完成

估计加速是:

流(1,加速:x ~ % 2.1 f \ n '、t1 / t2);
加速:x ~ 1.9