2017-01-05 2 views
0

루프에 대해 3 에서 발생하는 모든 계산을 추적하려고합니다. 데이터가 너무 커서 따라서 데이터를 추적하기가 어렵습니다. 따라서 루프에 대해 각 내부에서 반복되는 반복 횟수를 기록 할 테이블을 만들고 싶습니다.for 루프의 반복 횟수를 Matlab 테이블에 기록하십시오.

코드 :

for i = 1:4 
    % Calculations 
    i 
    for j = 1:3 
     % Calculations 
     j 
     for k = 1:3 
      % Calculations 
      k 
     end 
    end 
end 

그래서, 내가 기대하고있는 표 출력은

enter image description here

는 사람이 작업을 달성 좀 도와 주시겠습니까, 이런 식이다.

답변

0

처음에는 각 루프의 크기를 선언하고 track 행렬을 할당하는 다음 코드를 시도 할 수 있습니다.

ni=3 
nj=4 
nk=5 

track = zeros(3,ni*nj*nk); 

offset = 1 
for i = 1:ni 
    % Calculations 
    i 
    for j = 1:nj 
     % Calculations 
     j 
     for k = 1:nk 
      % Calculations 
      k 
      track(1,offset) = i; 
      track(2,offset) = j; 
      track(3,offset) = k; 
      offset = offset + 1; 
     end 
    end 
end 
+0

어떻게 행렬'track'에 대한 제목을 쓸 수 있습니까? 나는 이와 같은 것을 시도했다 :'[m, n] = size (track); for i = 1 : n track {i} = [ 'K ='num2str (i)]; end for i = 1 : m track {i} = [ 'n ='num2str (i)]; end' – user161816

+0

하지만 작동하지 않습니다. – user161816

2

당신은 당신의 i, jk 값의 모든 순열을 만든 다음 모든 순열을 통해 루프 단일 for 루프를 가지고 ndgrid를 사용할 수 있습니다.

[ii, jj, kk] = ndgrid(1:4, 1:3, 1:3); 

% Pre-allocate your results matrix 
results = zeros(size(ii)); 

for n = 1:numel(ii) 
    % Do calculation with ii(n), jj(n), kk(n) 
    results(n) = ii(n) + jj(n) + kk(n); 
end 

이제 당신은 당신이 할 수있는 모든 변수에 바로 인덱스 같은 방식의 ii, jj, 또는 kk 값이 results의 특정 항목에 대해 무엇인지 알고 싶다면. 당신이 정말로 표 출력이 필요한 경우, 당신은 당신의 테이블에 ii, jjkk을 변환 할 수 있습니다

result_of_interest = results(100); 
i_of_interest = ii(100); 
j_of_interest = jj(100); 
k_of_interest = kk(100); 

.

data = cat(2, ii(:), jj(:), kk(:))';