Сокращение большого времени итерации матрицы - PullRequest
2 голосов
/ 09 марта 2011

У меня есть некоторые массивные вычисления в 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

Есть ли способ сделать это быстрее? MATLAB предназначен для того, чтобы справляться с этими проблемами, так что я могу себе это представить?

Спасибо:).

Ответы [ 2 ]

2 голосов
/ 09 марта 2011

Если ваш matrix является матрицей, то это будет делать:

count = sum(matrix(:) >= smallNum & matrix(:) <= bigNum);

Если ваша матрица действительно огромная, используйте anyExceed. Вы можете профилировать (проверить время выполнения) обеих функций на matrix и принять решение.

2 голосов
/ 09 марта 2011
count = 0
for i = 1:100
    count = count + sum(matrix{i}(:,1) <= bigNum & matrix{i}(:,1) >= smallNum);
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...