MATLAB:通过循环运行Data Matrix并将结果添加到数据矩阵

时间:2014-02-19 15:22:28

标签: arrays matlab loops matrix nested-loops

我最终需要的是输入一个2列矩阵,通过一系列条件运行它并输出2个原始列加上另外3个。

我的初始数据矩阵我根据时间(第二列)分成几个数组,并继续在每个数组上单独应用我的条件:

A = arrayfun(@(x) M(M(:, 2) == x, :), unique(M(:,2)), 'uniformoutput', false);
n = numel(A);
k = 0;

for i = 1:n                             % for each # of arrays 
    matrix = A{i};                      % array i
    dat = size(matrix);
    length = dat(1,1);                  % length of i array  
    adductName = zeros(length, 1);      % preallocate columns  
    actualMass = zeros(length, 1);
    adductMass = zeros(length, 1);
    %... continued with conditions here's an example of one

    for r = 1:length                    % for the length of array i
        mass = matrix(1,r);
        M = mass-1;

        k=k+1;
      if any(M ==  matrix(:, 1))        % if any M matches rest of column 1 in array
         adductName(k) = 'M';
         actualMass(k) = M;
         adductMass(k) = mass;
      else
         adductName(k) = 'None';
         actualMass(k) = 0;
         adductMass(k) = 0;

adductName,actualMass和adductMass是我需要在输出中添加的三个附加列

我的问题是,如何将我的所有数组A {i}以及我的其他三列重新组合成一个数据矩阵来输出?

1 个答案:

答案 0 :(得分:0)

您可以使用[ ]运算符或显式调用horzcatvertcat以不同方式连接矩阵。有关详细信息,请参阅Creating and Concatenating Matrices文档部分。