【问题标题】:Save values of a matrix after each iteration in a new matrix每次迭代后将矩阵的值保存在新矩阵中
【发布时间】:2015-02-11 18:31:43
【问题描述】:

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

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 循环..我在我的代码前面定义了这个变量边,它是一个 1*40 矩阵...我想存储边值在 n 从 1 迭代之前,保存它,然后从 n=2 和 n=3 获取更多边缘值,并将所有三个边缘值放在一个矩阵中。我被困住了..需要你们的帮助

【问题讨论】:

  • 我不太明白你想要什么。什么是“边缘值”?你的代码出了什么问题?如果您可以提供一个小的示例输入矩阵以及您希望从中获得的输出,那将会有所帮助。
  • 请提供输入矩阵
  • hello chris...edges 是我的代码中已有的矩阵...它是 1 和 0 的 1x40 矩阵...例如 edges=[ 1,0,1,0, 0,0,1......1]..40 像这样的元素..问题是在代码的开头....我有一个名为“mat”的 3x40 矩阵....在第二代码行我从 mat 中选择一行并将其传递给矩阵“new mat”...现在我的代码进入 i & j 的循环...边缘取决于 i &j 的值...所以循环 i & j结束我得到一个边缘矩阵..现在当我再次转到我的第一行代码时,这个矩阵被覆盖......即 n=1:3 ..我想要的是 n=1 的单独边缘矩阵, n=2, n=3..
  • 那么也许您需要将边缘矩阵重新声明为矩阵单元。那么每条边{i}都是一个矩阵,对应于n = i ...
  • @scmg:我不明白...

标签: matlab matrix


【解决方案1】:

如果您之前在代码中将边定义为 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 边缘中。

希望对您有所帮助。

-------编辑------ 你的代码大概是这样的

%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

【讨论】:

  • 这就像一个魅力......非常感谢你的兄弟......非常感谢你的帮助...... :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-02
  • 1970-01-01
  • 2014-03-13
  • 1970-01-01
  • 2013-03-04
  • 1970-01-01
  • 2023-04-05
相关资源
最近更新 更多