2013-11-12 1 views
-1

Я использую цикл вложенных циклов для выполнения следующих функций: Я иду столбцом по столбцу в матрице TranLog (размер WXN) и нахожу, какая строка имеет ненулевое значение Основываясь на расположении строки этого ненулевого значения в TranLog, я вызываю вектор, связанный с этой строкой # в матричном порядке.Nested For цикл, не доходящий до конца моих матриц

для цикла выглядит следующим образом:

for jj=1:W; 
    for ii=1:N; 
     if TranLog(ii,jj)>0.5 
      test=Order(ii,:); 
     end 
    end 
end 

Когда я бегу это число выходных векторов меньше, чем должно быть. Например: Если Tranlog равен 23X5, а Order - 23X6, если в матрице TranLog разбросано 23 не нулей (в TranLog есть одно ненулевое значение для каждой строки), я получаю только 13 векторов из матрицы Order. Я не уверен, почему это не выполняется до завершения, я не получаю сообщение об ошибке, но он не выводит столько векторов, сколько я ожидаю.

+0

Возможно, было бы полезно включить тег, чтобы указать язык, который вы используете. – Dukeling

+0

Мне кажется, что ваши петли будут перебирать массив 'N * W', а не массив' W * N', учитывая порядок индексов в термине «TranLog (ii, jj)». –

+1

Ваш код отправлен точно в [этот очень похожий вопрос] (http://stackoverflow.com/questions/19919153). Это либо _duplicate account_, либо у вас одно и то же домашнее задание. Плохая форма в любом случае! – chappjc

ответ

0

В этом проблема. Ваша матрица имеет W строк и N столбцов, все же W индекс в, JJ, индексирует столбцов, а не строк в строке 3. Противоположное происходит с II, индекс N. Переключайте их вокруг, и вы должны быть хорошими!

for jj=1:W; 
    for ii=1:N; 
     if TranLog(jj,ii)>0.5 
      test=Order(ii,:); 
     end 
    end 
end