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

在matlab中将相同长度的内容存储到一个变量,matlab,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 然后,我希望在拆分为不同的元素后,将行1和行3合并为一个变量: for

我有一个包含以下内容的行的文件:

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
然后,我希望在拆分为不同的元素后,将行1和行3合并为一个变量:

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

但C1只存储最新的“温度”。如何使C1存储行1和行3的值(当然也在不同的行中)?

您必须创建一个新行。因为您绝对确定它们的长度相同,所以可以使用矩阵格式

第一个预定位空间,行数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中分配一行即可。

使用以下代码:

    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;
基本上,您可以在单元格数组
C1
中创建一个新索引
ix

以后编辑

这将创建二维单元阵列,而不是由一维单元阵列组成的一维单元阵列:

    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之前给出的答案相同,不同之处在于它不包含空单元格行。

我遇到了这个错误:从单元格转换为双精度时发生了以下错误:使用双精度时出错,从单元格转换为double是不可能的,但它将在变量编辑器中显示两次,我必须再次单击,以便使C1{1,1}和C2{1,2}。我想要的是,当我单击C1时,它将直接显示带有这些值的两行?怎么做?@user2290560您对单元格数组的索引不正确。C1现在是行单元格数组的向量单元格数组,而不是矩阵单元格数组,因此需要像
C1{1}{3}
那样对其进行索引,而不是
C1{1,3}
。如果你想要矩阵单元格数组,我会在答案中添加代码,顺便说一句,这很简单。。。