Matlab 缩短大型矩阵迭代时间
我需要在MATLAB中进行大量的矩阵计算。这并不复杂(见下文)。我对如何使MATLAB中的计算高效存在问题。我下面的方法是可行的,但由于计算时间的原因,它所花费的时间根本不可行Matlab 缩短大型矩阵迭代时间,matlab,Matlab,我需要在MATLAB中进行大量的矩阵计算。这并不复杂(见下文)。我对如何使MATLAB中的计算高效存在问题。我下面的方法是可行的,但由于计算时间的原因,它所花费的时间根本不可行 for i = 1 : 100 for j = 1 : 20000 element = matrix{i}(j,1); if element <= bigNum && element >= smallNum count = count + 1;
for i = 1 : 100
for j = 1 : 20000
element = matrix{i}(j,1);
if element <= bigNum && element >= smallNum
count = count + 1;
end
end
end
对于i=1:100
对于j=1:20000
元素=矩阵{i}(j,1);
如果元素=smallNum
计数=计数+1;
结束
结束
结束
有没有办法让这更快?MATLAB应该擅长解决这些问题,所以我可以这么想吗
谢谢:)。count=0
对于i=1:100
count=count+sum(矩阵{i}(:,1)=smallNum);
结束
如果您的矩阵是一个矩阵,则可以:
count = sum(matrix(:) >= smallNum & matrix(:) <= bigNum);
count=sum(矩阵(:)>=smallNum&matrix(:)matrix
是矩阵还是单元数组?如果所有行的列数都相同,那么将其视为单元数组是没有意义的。谢谢你,Jouni…快多了。它快多了,是因为求和非常有效,也就是说,我想编译器擅长对数字向量应用单个运算符吗?@vivid Color:是的,这是t的一个Matlab的基本设计特点。另外,它是解释器,而不是编译器;)Woops,解释器谢谢:p。看到这些加速后,我对MATLAB的尊敬与日俱增:)。事实上,MATLAB的现代版本包括一个JIT编译器。还有,我不是乔纳斯。:-)anyexcept检查是否有超出范围的元素,并在找到第一个元素后返回,对吗?它不适合计算范围外的元素数。
count = sum(matrix(:) >= smallNum & matrix(:) <= bigNum);