图片缩略图

计算浮点操作(拖鞋)

version 1.0.0.0 (576 KB) by 挂钱
扫描并解析每行MATLAB代码,并根据矩阵尺寸推断拖鞋

64下载

更新2015年4月23日

查看许可证

该程序计算MATLAB文件的拖布作为脚本或函数。通过扫描和解析MATLAB代码的每一行,我们基于矩阵大小推断浮点操作。计算算术运算,矩阵分解,基本函数和常用统计功能。该程序支持用户定义的新规金宝app则,它可以通过电子表格覆盖我们的预定规则。有关软件使用情况的详细信息,请参阅随附的PDF文档“FLOPS用户指南”。
用法:

步骤1:在脚本或函数中编写MATLAB代码,例如fileName.m。

步骤2:将所有变量保存在垫文件中。例如:
保存matfilename.mat.

第3步:配置MATLAB代码。
简介
(在此处运行Matlab代码,例如filename(a,b,c,d))
profileStruct =概要文件(“信息”);

步骤4:通过调用该功能计数拖鞋
拖鞋(文件名,matfilename,profilebruct);

解析和计数结果将显示在屏幕上,并发送到输出参数。

引用

挂钱(2021)。计算浮点操作(拖鞋)(//www.tatmou.com/matlabcentral/fileexchange/50608-counting-the-floating-point-operations-flops), MATLAB中央文件交换。检索

评论和评级(28.

挂钱

嗨dianxin,
我在Windows计算机上运行了代码,程序始终生成500140拖鞋。它似乎没有不一致。您可能希望检查工作区中的变量。FLOP计数取决于存储在当前工作区中的实际变量。

董鑫栾

嗨钱挂,我对代码感到困惑。我试图测试这里提供的代码,我所做的是什么
x = randn(100,3);Y =(x * [1 2 3]'+ Randn(100,1))> 0;
简介
[Beta_draw, M,我]= exampleFu (Y、X);
ProfileRuct_2 =配置文件('INFO');
[flopTotal_2, Details_2] =失败(“exampleFu”、“exampleFunMa”,profileStruct_2);
关闭

x = randn(100,3);Y =(x * [1 2 3]'+ Randn(100,1))> 0;
简介
[beta_draws,me1,me2] = emplyfun(y,x);
profileStruct =概要文件(“信息”);
[flopTotal_1, Details_1] =失败(“exampleFun”、“exampleFunMat”,profileStruct);
关闭
exampleFun和exampleFu与exampleFun完全相同。m你提供了测试,但flopTotal_1是不同的flopTotal_2(500140为flopTotal_2, 91986为flopTotal_1),我认为应该等于?因为我保持输入大小不变,算法不变。

挂钱

嗨之浩
计数器只适用于简单的MATLAB代码,而不适用于p-code或mex文件。假设你知道遗传算法的实现细节,你可以用纯m代码实现你自己版本的遗传算法,然后计算失败次数。祝你好运。

ZIHAO王

嗨钱,
感谢您开发拖鞋柜台的贡献。使用它时我有问题。我想计算我的遗传算法的潮流,我在我的脚本中使用函数ga(在matlab的最佳工具箱中)。但它不起作用。我想知道这个工具是否可以用来计算GA的拖鞋?

挂钱

嗨,洁具,
似乎您正在加载垫文件,因为我看到了输出
Line 1: MATLAB 5.0 MAT-file,…
FLOPS工具仅适用于脚本或函数中的普通MATLAB代码。它无法处理垫文件。示例文件“example.m”说明了软件如何工作。谢谢。

洁具赵

嗨挂钱,
非常感谢您的快速回复。我确实检查了我的系统语言设置,它在美国英语环境中。此外,我还通过Matlab编辑器打开了我的代码,它用英文正确显示。我还在学校服务器(在美国 - 英语设置中)运行我的代码,同样的问题再次出现。还有其他地方我可以检查吗?提前感谢您的帮助!

挂钱

亲爱的Yujie Zhao.
命令窗口中显示的输出字符取决于您的操作系统的语言设置。您可能希望尝试将我们英语设置为您的系统语言。作为诊断,您可以尝试通过MATLAB编辑器打开代码。如果代码以英语正确显示,则应在命令窗口中看到正确的字符。

洁具赵

嗨钱,

非常感谢您提供这个精彩的工具。我在这里得到一个问题。当我实现函数时,输出就像

第1行:MATLAB 5.0 MAT文件,平台:PCWIN64,创建:THU 9月24日13:14:20 2020 AC IM;xœãc``ØÁÄÀÀ¤9 °Bù@Åì@œ”Z’è™WÂÀ d7 õÍš ;íGéQz h Ó&qT Ë xœãc``ØÁÄÀÀ¤9 °Bù@Åì@œ”Z’è_PÂÀ d7 õMù:'gŽéíýöÝö-*¯ì¯èÄMdÙw{¿õçß×\òžÙ¿0Ìkõ°¸´¿í‹îéàÓoí¡Æ34maø™tÒ~V_êÙeý7÷ÃÄoø§5¿-Ø çϨ4kŸ×¹nÿ›yw¡³+àâ0°ý÷¶_›õ¯Û/Êá«.šx.¯k}ú˜çaû5ø6;ˆ]ÀÐ÷¥¿Ms¿B½u»ÉœMó¦Û«ŸÝ¡Zm~C=:Ø_´Óq3븺¦k×øß¿Ëùæ“®+Áþü5k]âre§ýß¿5ß&-§úrvå÷žëkx†Ä¾¾þþ9û[ÖO®_“K ~ wOdqOI³÷§AiU¶0 oß~¾oAÆß3 iaikuª¾KAþoþØ¥•“9·问题þy / oryJuY‡C
Ußsz¼¦Ei # \} y‡·.oIØ«kU ~ qurn¯•oI2+ cqºCfoUssiaIVFµ“«kU˜“¾iUuæ? UAa·mZutOþi / nh; {g8弗吉尼亚州害怕¸U··{uIdß害怕p®4œç³0xœãc``pb6æ€ò
Å3“av n-(îìéïcà”êw<¬sxīblü'$xœãc`0b6æ€ò
å3â1cp!ê
FLOPS = 61 * 0 = 0

这种类型的输出是不可读的。您能给我一些修复建议吗?

安德里亚·巴罗斯

Chaminda Bandara

非常感谢这个工具。

RuoChu杨

非常感谢!

挂钱

Zejiang,
我猜你需要提取驱动s函数的实际MATLAB代码。有时,s函数是用c之类的编译语言编写的,在这种情况下,需要用等效的MATLAB代码重新实现它。基本上,FLOPS计数只适用于简单的MATLAB代码,因为它解析算术运算符,然后估计每个运算符的FLOPS。谢谢你!

Zejiang Wang.

你好挂,
请问如何测量Simulink内部的SFUNCTION的拖鞋?金宝app
谢谢!

挂钱

嗨强,
谢谢你的评论。您是正确的 - 矩阵大小无法更改。通过在运行代码后检查MATLAB工作区,程序获取矩阵大小。然后它根据大小信息计算闪斗。它假设变量的大小是常量,但它的值可以随着代码运行而变化。

该工具非常有用,但使用它时需要小心:不要为两个变量使用一个变量名称,尤其是具有不同的大小。例如:
= (1, 1, 1, 1, 1, 1,, 1, 1, 1);b = [1, 2, 3, 4, 5, 6, 7, 8, 9);
功能[c] = myfun1(a,b)c = a * b;结束;返回54拖鞋;
功能[c] = myfun1(a,b)c = a * b;a = [1,2,3];结束;返回18张拖鞋;

乔斯

我有点困惑:你用拖鞋作为复数,而且
FLOPS通常意味着“每秒浮点运算”。
在实现这一点后,它就好了。

Bogdan udrea.


谢谢你这么方便的工具。我用它来跟踪Riccati求解器和卡尔曼滤波器中的FLOPS。
我没有金融工具箱,所以我必须在拖鞋中改变第365行

% flopTotal = nansum(flopEachLine .* flopMultiplier);

到目前为止

flopTotal = sum(flopEachLine .* flopMultiplier, 'omitnan');

最好,

BU.

挂钱

嗨穆罕默德,
非常感谢您的错误报告。FLOP COUNT软件不知道MATLAB解析代码如何,并且该软件仅识别简单的代码模式。鼓励用户简化代码,以便该软件可以识别运营商和相应的拖斗。我尽力修改软件,以便它将认识到更复杂的代码模式。

Mohnait.

嗨挂,

谢谢你的这个有用的工具。
我注意到与Matlab评论有关的错误。
我测试了你的工具,只在脚本中输入:“x = magic(3);%+magic(3);”,我得到:“FLOPs = 9 * 1 = 9”,在这里它应该是零。
在分号和%符号之间添加一个空格作为注释后,我得到了正确的“FLOPs = 0 * 1 = 0”。

干杯,
默罕默德

挂钱

达山,
感谢您对FLOPS柜台感兴趣。如果我们知道函数的理论上的FLOPS,我们可以在电子表格extendedrrules .xlsx中添加一个规则。例如,假设A是一个m × p矩阵,我们认为SVD需要2np^2+2n^3 FLOPS,我们可以在电子表格(有三列)中添加一行

第一列:圣言
第二列:2 * nrow * ncol ^ 2 + 2 * nrow ^ 3
第三列:一些用于注释的任意文本

运行该程序后,第二个输出参数“详细信息”应显示为代码的每行计数为多少拖鞋。如果软件识别扩展规则,我们应该看到“详细信息”中显示的额外拖鞋。

问候,
挂钱

达尔山帕特

嗨挂,

因为你提到这段代码不计算嵌套函数的失败,我想知道如何才能有一个工作周围,以计算失败的matlab内置函数,如null()或svd()等。谢谢你的贡献。

挂钱

嗨吉拉尼,

感谢您对翻牌计数工具的兴趣。

如果算术运算是基于复数的,则可以考虑通过编辑电子表格extendedrrules .xlsx来覆盖内部规则。基本上,在电子表格的第一和第二列中重载+、-、*、/等。

或者,您可以通过重写内部规则直接修改代码。从关于线1130,有一个开关......块,其中算术运算+ - * /被定义。

吉拉尼

嗨,挂墙,
谢谢你的好工具。当我乘以两个复数号时,它显示1张牌,实际上是6.任何想法如何解决这个问题?实际上,我的应用程序基于具有复杂值的矩阵。
再次感谢您的支持。金宝app

巴勃罗Calzado-Bravo

Jeyakarthikeyan P V.

感谢您的宝贵和重要贡献。这对我的研究很有用。

Ahvand.

感谢挂起您的有用代码。如果我成功发布纸质,我会引用您的代码。

挂钱

嗨Alireza,

感谢您对我的代码的兴趣。当我在研究论文时,我开发了该工具。我尽力使拖鞋尽可能准确地计算。欢迎评论和错误报告,并真诚地欣赏。

至于引文,我认为文件Exchange ID和版本号对每个Matlab中央提交都是唯一的,而其他研究人员可以检索原始文件以重现结果。所以我建议引用这样的引用

钱,挂起(2015)。计算浮点操作(拖鞋),Matlab中央档案交换,No. 50608,Ver。1.0,检索2015年6月30日。

Alireza Mohammadi.

嗨挂,

谢谢你的文件。它在我的研究中非常有用。我如何引用论文中的工作?

谢谢,
Alireza.

Matlab释放兼容性
用R2014A创建
兼容任何释放
平台兼容性
窗户 macOS Linux.
标签添加标签

社区寻宝

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!