Info

This question is closed. Reopen it to edit or answer.

Conditional split into columns

3 views (last 30 days)
fatduck9
fatduck9 on 30 Oct 2017
Closed: MATLAB Answer Bot on 20 Aug 2021
Hi all, I have got this array A=[10 20 30 40 50 10 20 30 40 10 30 30 40 .. .. Val]
My goal is to create a new column once an element of value 10 occurs in the array. Then I want to make a maximum of each particular column.
10 10 10
20 20 ..
30 30 ..
40 40
50
[50] [40] [..]
I tried some built in function within a loop (like sum, reshape, splitarray etc.) but there has always been an error which I did not understand quite much. Would anybody give me a hint, please?
Thank you.
  1 Comment
Stephen23
Stephen23 on 30 Oct 2017
All elements of an array/matrix must contain a value. What value do you put into the second row third column position?

Answers (2)

Rik
Rik on 30 Oct 2017
You might be able to bodge this together with a conversion to char, use strsplit (or even textscan), and use cellfun to convert back to double and find the max.

KL
KL on 30 Oct 2017
Edited: KL on 30 Oct 2017
You could use a cell array,
A=[10 20 30 40 50 10 20 30 40 10 30 30 10 20 10 10 20 30];
inds = find(A==10);
res = arrayfun(@(x,y) A(x:y-1),inds,[inds(2:end) numel(A)+1],'uni',0)
and then to find the maximum,
maxRes = cellfun(@max,res)

This question is closed.

Tags

Community Treasure Hunt

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

Start Hunting!