我是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并将所有三个边值放在一个矩阵中。我被困了......需要你的帮助人员
答案 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