合并后的函数结果

时间:2016-07-24 08:03:15

标签: matlab

大家早上好

我致力于开发数学模型来解决工业工程问题之一,但我在编写MATLAB代码时遇到了问题。所以我在下面的代码中简化了这个问题。我需要在下一步使用for函数之后将X的所有结果合并到一个矩阵中(在这个简单的情况下,这个矩阵将是40 * 3)

LIST=randi([0,1],[4,3]);

for i = 1:10
    j=i

V=randi([0,1],[4,3]);

for m = 1:4
for n = 1:2
    if V(m,n)== 1;
       X(m,n) = LIST(m,n);
    elseif V(m,n)== 0;
       X(m,n) = 2;
end
end
end

for m = 1:4
for n = 3
    if V(m,n)== 1;
       X(m,n) = LIST(m,n);
    elseif V(m,n)== 0;
       X(m,n) = 3;
    end
end
end

X
end

感谢您的时间和考虑

1 个答案:

答案 0 :(得分:0)

在外循环(postRequest("http://your-url", "name=value&anothername=somevalue"); )的每次迭代中,for i = 1:10矩阵中的值都会被覆盖。

为了存储您需要的所有值,以增加X的第二个循环(X)的最大限制值for m = 1:4矩阵的行值。4

您可以通过修改X矩阵的索引来实现,如下所示:

X(m+(i-1)*4,n)

你可以让你的脚本更多"一般"通过使用函数size函数确定将其评估为LIST矩阵中的行数的限制:

[n_row,n_col]=size(LIST)

以这种方式

  • 在外循环的第一次迭代中,行索引的范围从14
  • 在第二次迭代时,itr的范围从1+(2-1)*44+(2-1)*4,范围从58

这是更新后的代码

LIST=randi([0,1],[4,3]);
[n_row,n_col]=size(LIST)

for i = 1:10
   j=i
   V=randi([0,1],[4,3]);
%    for m = 1:4
   for m = 1:n_row
      for n = 1:2
         if V(m,n)== 1;
%             X(m,n) = LIST(m,n);
            X(m+(i-1)*n_row,n) = LIST(m,n);
         elseif V(m,n)== 0;
%             X(m,n) = 2
            X(m+(i-1)*n_row,n) = 2;
         end
      end
   end
%    for m = 1:4
   for m = 1:n_row
      for n = 3
         if V(m,n)== 1;
%             X(m,n) = LIST(m,n)
            X(m+(i-1)*n_row,n) = LIST(m,n);
         elseif V(m,n)== 0;
%             X(m,n) = 3;
            X(m+(i-1)*n_row,n) = 3;
         end
      end
   end
   X
end

希望这有帮助。

Qapla'