Separating values in cell arrays

3 views (last 30 days)
ugur uresin
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:
plotdata=xlsread('S:/PLOT/PLOT.xlsx');
[num, txt] = xlsread('S:/PLOT/PLOT.xlsx', 'B4:B43');
[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!
  5 Comments
ugur uresin
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

Sign in to comment.

Accepted Answer

Paolo
Paolo on 1 Jul 2018
Edited: Paolo on 1 Jul 2018
[num, txt] = xlsread('mydata.xlsx', 'B4:B11');
mylist = cellfun(@(x) str2double(regexp(x,'(\d*\.?\d*)$','match')),txt);
  2 Comments
Paolo
Paolo on 1 Jul 2018
You are welcome. You may also use:
[num, txt] = xlsread('mydata.xlsx', 'B4:B11');
[~,mylist] =strtok(txt,'=');
mylist =str2double(strtok(mylist,'='));

Sign in to comment.

More Answers (1)

Jan
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 Comments
Jan
Jan on 1 Jul 2018
Then adjust the index: 4:uplim+4-1 to 1:uplim.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!