# Separating values in cell arrays

3 views (last 30 days)
ugur uresin on 1 Jul 2018
Commented: Jan on 1 Jul 2018
Suppose, one of the my columns in my excel data as follows:
'G1(f1) : Resulting Value = 0.5'
'G1(f2) : Resulting Value = 1'
'G1(f3) : Resulting Value = 1.5'
'G1(f4) : Resulting Value = 2'
.
.
.
'G1(f8) : Resulting Value = 4'
I'd like to separate the values that 0.5, 1 ... 4 as double!
I have tried the code below:
[rows,cols]=size(txt);
uplim=plotdata(2,2); %this cell gives number of 'Resulting Value's
k=1;
for i=4:uplim+4-1
[dummy(k), txt(k)] = strtok(txt(k), '=');
mylist(k)=strtok(txt(k),'= ');
k=k+1;
i=i+1;
end
This code gives "mylist" as 1x8 cell!
THE PROBLEM is that I can not use "mylist" for arithmetic operations. How can I turn "mylist" from cell to a matrix or a vector that I can use for arithmetic operations.
Or I'm open to new codes to separate the values that 0.5, 1 ... 4 as double!
ugur uresin on 1 Jul 2018
Edited: ugur uresin on 1 Jul 2018
It always starts from B4 and ends to B"x"
x: Number of functions in my data and it's given in B2

Paolo on 1 Jul 2018
Edited: Paolo on 1 Jul 2018
mylist = cellfun(@(x) str2double(regexp(x,'(\d*\.?\d*)\$','match')),txt);
##### 2 CommentsShowHide 1 older comment
Paolo on 1 Jul 2018
You are welcome. You may also use:
[~,mylist] =strtok(txt,'=');
mylist =str2double(strtok(mylist,'='));

Jan on 1 Jul 2018
Edited: Jan on 1 Jul 2018
Remember, that txt is a cell array. Then eitehr use
[dummy, str] = strtok(txt{k}, '=');
But strtok can operate on the complete cell also:
[~, mylist] = strtok(txt(4:uplim+4-1), '=');
mylist = strrep(mylist('= ', ''));
Note: i=i+1; is confusing but useless only inside a for i loop.
##### 2 CommentsShowHide 1 older comment
Jan on 1 Jul 2018
Then adjust the index: 4:uplim+4-1 to 1:uplim.