将for循环中的迭代次数记录到Matlab表中

时间:2017-01-05 13:36:56

标签: matlab loops for-loop

我试图跟踪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

所以,我期待的表格输出是这样的,

enter image description here

任何人都可以帮助我完成这项任务。

2 个答案:

答案 0 :(得分:2)

您可以使用ndgrid创建ijk值的所有排列,然后使用循环的单个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中特定条目的jjkkresults值,您可以将所有变量编入索引同样的方式。

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

如果您确实需要表格输出,可以将iijjkk转换为表格。

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