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;

我需要在MATLAB中进行大量的矩阵计算。这并不复杂(见下文)。我对如何使MATLAB中的计算高效存在问题。我下面的方法是可行的,但由于计算时间的原因,它所花费的时间根本不可行

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);