cell2mat not working when cell array of type char has numbers of different lengths
5 次查看(过去 30 天)
显示 更早的评论
Hello - I read in header and data information from files using xlsread. The text fields are returned in single column in a cell array of type char (for example "2014abc1-5ab" or "303abc2-5ab"). I need to separate the first set of digits, and I'd like it to be ultimately in a numeric array.
I current do:
[A, B] = xlsread('data.xls');
C = regexp(B,'\d*','match', 'once');
D = cell2mat(C);
E = str2num(D);
when B = {'2014abc1-5ab'; '2024abc1-5ab'}; The code works as desired. when B = {'2014abc1-5ab'; '303abc1-5ab'}; The code crashes in the cell2mat function. I've traced the problem to the 2014 and 303 being a different number of digits. Ultimately, I'd just like a column of the first numbers in B. B = [2014; 303]. I'm open to any suggestions to make the whole process cleaner.
Thanks!
0 个评论
采纳的回答
更多回答(2 个)
Chandrasekhar
2014-4-2
编辑:Chandrasekhar
2014-4-2
In the second case the B{1} has 12 characters where as B{2} has only 11 characters . this is making an inconsistent matrix when cell2mat command is used. A matrix with 1st row containing 12 columns and 2nd row containing 11 columns cannot be created.
0 个评论
Dishant Arora
2014-4-2
[A, B] = xlsread('data.xls');
C = regexp(B, '\d*', 'match', 'once');
E = cellfun(@str2num, C, 'Un', 1);
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 String Parsing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!