0

如果我有一个用逗号分隔的字符串字符的 Matlab CELL 行,例如:

12/28/2012,00:00:01,0.99458,1,10518,0.99458,0.99483,0,0,0,0,-,-,-,b,-,C

如何在矩阵中将每一个分隔成自己的列?这样做最有效的方法是什么?这可以做到吗?谢谢

4

2 回答 2

1

更新:刚刚意识到这个问题与matlab中的how-to-convert-comma-separated-string-to-cell-array-of-strings-in-matlab重复,并且我的答案与@Jonas提供的答案重复。我将其标记为重复。

这是我知道的最有效的方法:

%# Build your string
Input = '12/28/2012,00:00:01,0.99458,1,10518,0.99458,0.99483,0,0,0,0,-,-,-,b,-,C';

%# Convert to cell array of strings
Output = regexp(Input, '([^,]*)', 'tokens');
Output = cat(2, Output{:});

需要注意的几点:

1)注意,无论Input是字符数组(即字符串)还是包含字符数组的单元格,这都将起作用。

2)我假设您希望输出是字符串的单元格数组。顺便说一句,我想不出另一种方法来使用 Matlab 将不同长度的字符串分组到单独的列中,而无需构建自己的自定义类。

3)@IlyaKobelevskiy 提供的解决方案会将字符串分组到单独的行(而不是列)中,因此基本上将您限制在单个观察范围内。

于 2012-12-31T04:44:40.567 回答
0

假设 str 是您的细胞系:

str ={'12/28/2012,00:00:01,0.99458,1,10518,0.99458,0.99483,0,0,0,0,-,-,-,b,-,C'};
ind=strfind(str{1},',');
len=diff([0 ind]);
sz=max(len);
A=zeros(length(ind),sz);
prev=1;
for i=1:length(ind)
    A(i,1:len(i)-1)=str{1}(prev:(ind(i)-1));
    prev=ind(i)+1;
end;
A=char(A);

不确定这是否是最有效的方法,但应该可以...

于 2012-12-31T04:16:37.347 回答