我试图跟踪3 for loops 下发生的所有计算。数据太大,因此很难跟踪数据。因此,我想构建一个表,它将记录每个 for循环内发生的迭代次数。
代码:
for i = 1:4
% Calculations
i
for j = 1:3
% Calculations
j
for k = 1:3
% Calculations
k
end
end
end
所以,我期待的表格输出是这样的,
任何人都可以帮助我完成这项任务。
答案 0 :(得分:2)
您可以使用ndgrid
创建i
,j
和k
值的所有排列,然后使用循环的单个for
循环所有排列。
[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
值,您可以将所有变量编入索引同样的方式。
result_of_interest = results(100);
i_of_interest = ii(100);
j_of_interest = jj(100);
k_of_interest = kk(100);
如果您确实需要表格输出,可以将ii
,jj
和kk
转换为表格。
data = cat(2, ii(:), jj(:), kk(:))';
答案 1 :(得分: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