次のようなコンマで区切られた文字列文字の Matlab CELL 行がある場合:
12/28/2012,00:00:01,0.99458,1,10518,0.99458,0.99483,0,0,0,0,-,-,-,b,-,C
それぞれをマトリックス内の独自の列に分割するにはどうすればよいですか? これを行う最も効率的な方法は何ですか? これはできますか?ありがとう
更新:この質問が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 が提供するソリューションは、文字列を個別の行 (列ではなく) にグループ化するため、基本的に単一の観測のみに制限されます。
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);
それが最も効率的な方法かどうかはわかりませんが、うまくいくはずです...