【问题标题】:Alternate of Arrays阵列的替代品
【发布时间】:2014-02-21 06:25:34
【问题描述】:

亲爱的,我正在尝试解决我的一个问题。我必须使用 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

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

【问题讨论】:

  • 与往常一样,对代码的书面描述远不如一些实际代码有意义。你有任何实际的代码来支持这个问题吗?
  • 学习使用数组。他们是你的朋友。尤其是在 Matlab 中,从技术上讲,所有变量都是数组。
  • 我可以举一个我的代码的小例子
  • 您可以查看Maps 来存储数据。

标签: matlab


【解决方案1】:

我看到前 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

【讨论】:

  • 是的,这是一个很好的方法……但是我必须将各个数组传递给不同的函数进行不同的计算。以数组的形式,我可以给它们起一个名字,这样可以记住。但是以矩阵形式,我很难记住列名。此外,一个循环将在另一个循环下工作。所以在我的问题中两个循环都不能分开。
猜你喜欢
  • 1970-01-01
  • 2012-10-09
  • 1970-01-01
  • 1970-01-01
  • 2020-02-17
  • 1970-01-01
  • 2015-12-07
  • 2018-11-08
  • 1970-01-01
相关资源
最近更新 更多