How to format a cell array to different rows

2 views (last 30 days)
With this following code:
raw = fileread('testdata.txt');
data = regexp(raw,'[+-]?\d+\.?\d*', 'match');
g=(cellfun(@str2num,data))
It results in g to look like: [1003 ...... 1009...1016....1020] , where its a 1x242 array.
I want to split into multiple rows to have the data look like this instead:
[1003, ,........;
1009 , .......;
1016..........;
1020.........; ]
Could anyone provide some help in how to accomplish this?

Accepted Answer

Star Strider
Star Strider on 10 Apr 2021
Try this:
fidi = fopen('testdata.txt', 'rt');
C = textscan(fidi, '%f', 'Delimiter',' ', 'MultipleDelimsAsOne',1); % Cell Array Output
fclose(fidi);
V = [C{:}]; % Extract Numerical Vector
segments = [find(log10(V) >= 3); numel(V)+1]; % Determine Segment Limits
seglen = diff(segments); % Segment Lengths (For ‘mat2cell’)
Out = mat2cell(V, seglen, 1); % Cell Array Of Segments
Row1 = Out{1}(1:7).' % Display First 7 Elements
Row2 = Out{2}(1:7).' % Display First 7 Elements
Row3 = Out{3}(1:7).' % Display First 7 Elements
Row4 = Out{4}(1:7).' % Display First 7 Elements
I have no idea how robust it would be to other such files. It works with this one.

More Answers (0)

Categories

Find more on Cell Arrays in Help Center and File Exchange

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!