我有一个150X1的细胞阵列。数组中有多种数据类型。第一个单元格包含0.9VA = 1.012207
;第二个:0.9VA_CLK = 0.020752
;像这样(大部分)。我想使用=
作为分隔符将单元格分为两个单元格。因此,{1,1}:0.9VA
和{1,2}:1.012207; {2,1}:0.9VA_CLK
和{2,2}:0.020752
;等等等等。我试过将它们转换为字符串,然后使用strsplit
;但是,我遇到了问题,因为字符串数组的大小是可变的。
如果我可以提供其他信息,请告知我。感谢您的帮助和提前的时间。
答案 0 :(得分:0)
您确实可以将strsplit
应用于单元格数组中的每个字符串(字符数组)。为此,您可以使用cellfun
:
c{1} = '0.9VA = 1.012207';
c{2} = '0.9VA_CLK = 0.020752';
c{3} = 'CSIPhgenSWoffList = [0, 0, 0, 0]';
c{4} = 'SomethingElse = [0.020752, 0.24564]';
c = cellfun(@(x)strsplit(x,'='),c,'UniformOutput',false);
c = cat(1,c{:});
我在这里使用一个小的示例单元格数组c
,其中包含四个字符串,我希望这是有代表性的。我使用strplit
将c
应用于cellfun(x,'=')
中的每个单元格,它以等号分割并返回一个包含单元格数组的单元格数组。也就是说,c
中的每个字符串都变成了包含2个字符串的单元格数组(例如'0.9VA '
和' 1.012207'
。这确实在字符串的开头和结尾留有一些空格。>
下一行cat
将单元格数组的此单元格数组转换为二维单元格数组。最终输出是一个单元格数组c
,其中包含与原始单元格数组相同的行数,并具有2列。第一列对应于等号之前的部分,第二列对应于等号之后的部分。
要删除空格,可以再次使用strtrim
和cellfun
:
c = cellfun(@strtrim,c,'UniformOutput',false);