Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: How to a 1-D matrix into several 1-D matrix based on condition
Replies: 5   Last Post: Dec 8, 2012 4:36 PM

 Messages: [ Previous | Next ]
 dpb Posts: 9,850 Registered: 6/7/07
Re: How to a 1-D matrix into several 1-D matrix based on condition
Posted: Dec 8, 2012 3:46 PM

On 12/8/2012 1:15 PM, S Ehtesham Al Hanif wrote:
> Suppose I have matrix A like below:
>

...

>
> Now I want to divide these into a few groups (1 D matrix) based on one
> condition that is when in that matrix i will reach 0 it will generate a
> 1-D matrix up to this such as below mentioned B,C,D,E.
>

...

>
> Can anybody suggest me how to do this?

Is there a homework problem that needs this somehow???? I just solved
the same problem for a Christopher Fell in a thread " Divide single
column into variables" just a few days ago....

First, for many reasons you do _NOT_ want to poof variable names into
the Matlab workspace--for this problem use a cell array since the
various subsets are of varying lengths. If you really, really, really
want a alpha name, then put the cells into named structure fields...

>> inz=find(A);
>> ix=find(diff(inz)>1);
>> i1=1;for i=1:length(ix),c(i)={A(inz(i1):inz(ix(i)))'};i1=ix(i)+1;end
>> c(i+1)={A(inz(i1):end)'};
>> c{:}

ans =
1 3 5 7 8 1 4
ans =
1 4 6 3
ans =
1 4 6
ans =
2 5 9 1
>>

Salt to suit a fixup if you do want to keep the zeros--it's a relatively
easy modification.

Note I transposed the column to row vector to make the final output more
concise.

--

Date Subject Author
12/8/12 S Ehtesham Al Hanif
12/8/12 dpb
12/8/12 james bejon
12/8/12 dpb
12/8/12 S Ehtesham Al Hanif
12/8/12 dpb