在每次迭代后,在新矩阵中保存矩阵的值

时间:2015-02-11 18:31:43

标签: matlab matrix

我是MATLAB的新手。我正在编写一个代码,每次循环结束时我需要在新矩阵中保存矩阵的值。这是代码段:

for n=1:3
    new_mat=mat(n,:)
    for i=0:9
        for j=1:4
            k = i+j+1;
            if k > 10
                k = k - 10;
            end
            if abs(new_mat(i+1)-new_mat(k)) > 6.97
                edges(i*4+j) = 1;
            else 
                edges(i*4+j) = 0;
            end   
        end
    end 
end

这是代码......前两行选择一行并进入i& j loop..i在我的代码中先前定义了这个可变边,这是一个1 * 40矩阵......我想在n从1迭代之前存储边值,保存这个,然后从n = 2和n =获得更多的边值3并将所有三个边值放在一个矩阵中。我被困了......需要你的帮助人员

1 个答案:

答案 0 :(得分:0)

如果您在代码中将边缘定义为1x40,则执行

%before the loop processing
[num_rows,num_cols] = size(edges);
hist_edges = zeros(num_rows*3, num_cols); %this gives a 3x40 matrix

然后保存值,将此位置于匹配“for n = 1:3”的“end”之前

hist_edges(n,:) = edges(1,:);

如果您不知道用作索引的冒号意味着全部。所以当我们说 hist_edges(n,:)这意味着行n时,取所有列。所以我们将边缘的所有列存储到一行hist边缘。

希望有所帮助。

<强> ------- ------ EDIT 你的代码看起来大致像这样

%i simply replace 3 with some variable 
max_iterations = 3;

%before the loop processing
[num_rows,num_cols] = size(edges);

%this gives a 3x40 matrix
hist_edges = zeros(num_rows*max_iterations, num_cols); 

for n=1:max_iterations
    new_mat=mat(n,:)
    for i=0:9
        for j=1:4
            k = i+j+1;
            if k > 10
                k = k - 10;
            end
            if abs(new_mat(i+1)-new_mat(k)) > 6.97
                edges(i*4+j) = 1;
            else 
                edges(i*4+j) = 0;
            end   
        end
    end 

    %stores the value of edges before the next iteration
    hist_edges(n,:) = edges(1,:);
end