将相同长度的内容存储到matlab中的一个变量中

时间:2014-07-18 12:36:50

标签: matlab

我的文件包含一些内容如下所示:

1.000000 - 1.000200 0 -> 2 A-MPDU 1.000000 - 1.000100 SUCCESS 1.000100 - 1.000200 FAIL
1.000425 1 TIMEOUT
1.000150 - 1.000350 1 -> 3 A-MPDU 1.000150 - 1.000250 FAIL 1.000250 - 1.000350 FAIL

然后我想在分割到不同元素后将row1和row3组合成一个变量:

for z = 1:length(myTextArray)
   temp = regexp(A{z,1}, ' ', 'split');
   if cols == 15
     C1 = temp;
   end
end

但C1只存储最新的“临时”。如何使C1存储row1和row3值(当然也在不同的行中)?

2 个答案:

答案 0 :(得分:1)

使用此代码:

    ix = 0;
    C1 = {};

    for z = 1:length(myTextArray)
            temp = regexp(A{z,1}, ' ', 'split');

            if numel(temp) == 15
                    ix = ix + 1;
                    C1{ix} = temp;
            end;
    end;

基本上,您在单元格数组ix中创建一个新索引C1

稍后修改

这将创建2D单元阵列而不是1D单元阵列的1D单元阵列:

    ix = 0;
    C1 = cell(0,15);

    for z = 1:length(myTextArray)
            temp = regexp(A{z,1}, ' ', 'split');
            if numel(temp) == 15
                    ix = ix + 1;
                    C1(ix, :) = temp;
            end;
    end;

这基本上与EJG89先前给出的答案相同,不同之处在于它不包含空单元格行。

答案 1 :(得分:0)

您必须创建一个新行。由于您完全确定它们的长度相同,因此您可以坚持使用矩阵格式。

第一个prelocate空间,行数m,乘以列数,n:

z = ;
n = ;

C1 = zeros(m,n) % You might need a cell instead of an array

for z = 1:length(myTextArray)
   temp = regexp(A{z,1}, ' ', 'split');
   if cols == 15
     C1(z,:) = temp; % Important change right here, use indexes to create a multidimensional storage variable.
   end
end

所以最后你只需要使用索引在C1中分配一行。