在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}
。如果你想要矩阵单元格数组,我会在答案中添加代码,顺便说一句,这很简单。。。