正则表达式格式并使用 2 个元胞数组
regexp format and using 2 cell arrays
我有一个由 20 个名为 T 的单元格组成的矩阵。
此矩阵中的每个单元格都包含下一个内容:
1,26:00:01.490, 2.40,101.2, 7.8,-24.0,20.40,-0.76,-0.26
我想将其分隔并分成几列,所以我使用了:
Data=regexp(T,',','split');
结果是我得到数据 = 20x1 个单元格,每个单元格内还有另一个单元格,其中包含我想要的拆分向量。
到目前为止一切都很好,但接下来我想做的是获取所有时间变量(例如 26:00:01.490
),但它们位于 2 个单元格内。
我想做的是 Data{:,1}{1,2}
但它说错误的单元格引用操作。
有人知道如何获取另一个单元格内的单元格数组中的整列吗?
如果所有二级单元格的大小都相同(即你所有的字符串都有相同数量的逗号),你可以将所有二级单元格垂直拼接成一个二维单元格数组,然后访问列很容易。
例如:
>> T(1,:) = {'1,26:00:01.490, 2.40,101.2, 7.8,-24.0,20.40,-0.76,-0.26'}; %// example...
>> T(2,:) = {'2,26:00:01.490, 2.40,101.2, 7.8,-24.0,20.40,-0.76,-0.26'}; %// ...with 2 rows
>> Data = regexp(T,',','split'); %// as per your code
>> Data = vertcat(Data{:}); %// concatenate vertically to obtain 2D cell array
>> Data(:,1:2) %// now you can access columns
ans =
'1' '26:00:01.490'
'2' '26:00:01.490'
您可以通过使用 vertcat
和 {:}
的组合连接 1x9
单元格之间的数据来实现。
%//First form T
str='1,26:00:01.490, 2.40,101.2, 7.8,-24.0,20.40,-0.76,-0.26';
str=repmat({str},20,1);
Data=regexp(str,',','split');
Data1=vertcat(Data{:});
%//Get your time data in form of cells
timeData_cells=Data1(:,2);
%//Get your time data in form of a matrix
timeData_matrix=vertcat(Data1{:,2}) %//This will work only if all time strings
%//have the same length.
%Answer
timeData_cells=
'26:00:01.490'
'26:00:01.490'
.
.
.
'26:00:01.490'
'26:00:01.490'
timeData_matrix=
26:00:01.490
26:00:01.490
.
.
.
26:00:01.490
26:00:01.490
我有一个由 20 个名为 T 的单元格组成的矩阵。 此矩阵中的每个单元格都包含下一个内容:
1,26:00:01.490, 2.40,101.2, 7.8,-24.0,20.40,-0.76,-0.26
我想将其分隔并分成几列,所以我使用了:
Data=regexp(T,',','split');
结果是我得到数据 = 20x1 个单元格,每个单元格内还有另一个单元格,其中包含我想要的拆分向量。
到目前为止一切都很好,但接下来我想做的是获取所有时间变量(例如 26:00:01.490
),但它们位于 2 个单元格内。
我想做的是 Data{:,1}{1,2}
但它说错误的单元格引用操作。
有人知道如何获取另一个单元格内的单元格数组中的整列吗?
如果所有二级单元格的大小都相同(即你所有的字符串都有相同数量的逗号),你可以将所有二级单元格垂直拼接成一个二维单元格数组,然后访问列很容易。
例如:
>> T(1,:) = {'1,26:00:01.490, 2.40,101.2, 7.8,-24.0,20.40,-0.76,-0.26'}; %// example...
>> T(2,:) = {'2,26:00:01.490, 2.40,101.2, 7.8,-24.0,20.40,-0.76,-0.26'}; %// ...with 2 rows
>> Data = regexp(T,',','split'); %// as per your code
>> Data = vertcat(Data{:}); %// concatenate vertically to obtain 2D cell array
>> Data(:,1:2) %// now you can access columns
ans =
'1' '26:00:01.490'
'2' '26:00:01.490'
您可以通过使用 vertcat
和 {:}
的组合连接 1x9
单元格之间的数据来实现。
%//First form T
str='1,26:00:01.490, 2.40,101.2, 7.8,-24.0,20.40,-0.76,-0.26';
str=repmat({str},20,1);
Data=regexp(str,',','split');
Data1=vertcat(Data{:});
%//Get your time data in form of cells
timeData_cells=Data1(:,2);
%//Get your time data in form of a matrix
timeData_matrix=vertcat(Data1{:,2}) %//This will work only if all time strings
%//have the same length.
%Answer
timeData_cells=
'26:00:01.490'
'26:00:01.490'
.
.
.
'26:00:01.490'
'26:00:01.490'
timeData_matrix=
26:00:01.490
26:00:01.490
.
.
.
26:00:01.490
26:00:01.490