阵列的替代

时间:2014-02-20 21:31:30

标签: matlab

亲爱的,我正在努力解决我的一个问题。我必须处理15个变量,其结果将迭代生成。我必须为每个变量存储每次迭代的结果。我将在两个循环下运行我的程序。一个是内循环,另一个是外循环。在内部循环中,我将为15个变量中的12个存储每次迭代的结果,比如在数组中,然后对于外部循环,我还将保存剩余3个变量的结果。简单来说,我可以借助数组来做到这一点。但我不想引入这么多阵列。你能建议我,是否可以使用结构或CellArrays?如果你在上面提到的结构下写一个小程序,我将非常感激。我可以添加一个我的代码的小例子

X1 = zeros(a,1);
X2 = zeros(a,1);
X3 = zeros(a,1);  
X4 = zeros(a,1);  
X5 = zeros(a,1);  
X6 = zeros(a,1);  
X7 = zeros(a,1);  
X8 = zeros(a,1);  
X9 = zeros(a,1);  
X10 = zeros(a,1);  
X11 = zeros(a,1);  
X12 = zeros(a,1);  
X13 = zeros(b,1);  
X14 = zeros(b,1);  
X15 = zeros(b,1);  

   for i = 1:b  
       for j = 1: a   
           X1(i)= some calculation  
           X2(i) = some calculation  
           ...... and so on till   
           X12(i) = some calculation  
       end
    x13(j)=some calculation  
   X14(j)= some calculation
    X15(j) = some calculation
end

最后我想以表格的形式显示结果。是否可以将其转换为结构/ cellarray?

1 个答案:

答案 0 :(得分:0)

我看到前12个数组共享相同的长度,所以你可以把它们放在一个矩阵中,矩阵的列是你的数组,最后3个数组是相同的

x1 = zeros(a,12);
x2 = zeros(b,3);

for i = 1:a
    for k = 1:12 
        x1(i,k) = i+k; %// do something else
    end
end
for i = 1:b
    for k = 1:3 
        x2(i,k) = i+k; %// do something else
    end
end

编辑:您也可以使用

定义的结构来执行此操作
a = 5; b = 4; S = struct('x1',zeros(a,1),'x2',zeros(a,1),'x15',zeros(b,1));

S = 

     x1: [5x1 double]
     x2: [5x1 double]
    x15: [4x1 double]

您可以修改:

>> S.x2(3) = 3+3;

你可以这样画出

>> S.x2

ans =

     0
     0
     6
     0
     0