我正在编写有关高斯消除的代码,其中一个要求是计算函数中使用的矩阵加法的数量和矩阵乘法的数量。如果我不能使用“profile”命令,那么我的代码中应该有什么作为计数器?
Matlab 是否有一些内置函数来计算函数中使用的矩阵加法/乘法的数量?
谢谢你。
我正在编写有关高斯消除的代码,其中一个要求是计算函数中使用的矩阵加法的数量和矩阵乘法的数量。如果我不能使用“profile”命令,那么我的代码中应该有什么作为计数器?
Matlab 是否有一些内置函数来计算函数中使用的矩阵加法/乘法的数量?
谢谢你。
没有了,不会再有了。它曾经有一个flops函数来计算代码中的浮点数操作,但它在多年前就被删除了。对于flops已过时的原因,您可以阅读此内容。
你确定你需要Matlab来做到这一点吗?如果您的代码不是那么复杂,您可以通过手动计算操作数来给出一个好的上限。
为您需要计数的操作创建一个包装函数,并使它们保持计数。预计会有很多开销;)添加一些逻辑来重置和/或显示结果计数。
例如乘法:
function c = mytimes(a,b)
persistent count;
if nargin==1
switch a
case 'reset'
c = count;
count = 0;
case 'show'
c = count;
otherwise
error('wrong input');
end
end
c = a*b;
if isempty(count)
count = 1;
else
count = count+1;
end
end